Je construis une API avec websocket qui sérialise les données via JSON. L'application elle-même est une application de chat. J'ai mis au point la structure suivante pour envoyer mes données:
{date: '2020-05-31', heure: '14: 28: 05 ', texte: "Hey!", à: '<id: int>', à partir de: '<id: int>'}
L'utilisateur envoie essentiellement un message via le navigateur et celui-ci est reçu dans un serveur websocket. Le from: 'id' proviendrait de l'utilisateur qui envoie les données, tandis que le to: 'id' serait à l'utilisateur auquel les données sont envoyées.
En regardant cela, j'ai un très mauvais pressentiment. Mes pensées; L'utilisateur utilisant l'application s'authentifierait en théorie et c'est là qu'il obtiendrait son identifiant. Ensuite, le receveur aurait un autre identifiant, tel que celui-ci ne soit pas le même que celui authentifié (évidemment). Le serveur chercherait alors cet identifiant et enverrait le message, mais je ne suis pas sûr que ce soit sécurisé.
J'ai certains aspects qui, je pense, doivent être traités correctement pour protéger l'application de tout attaquant:
- Que faire si l'attaquant décide de falsifier le " from: id" de sorte qu'il puisse envoyer des messages arbitraires à n'importe qui de n'importe quel utilisateur?
- Que si l'attaquant crée un script qui spams des millions de messages en tirant parti du champ "to: id" ?
Est-il possible qu'il y ait un autre problème de sécurité Je ne suis pas concerné?