Si des données sensibles devaient être transmises via la chaîne de requête par opposition à la requête POST? Je me rends compte que la chaîne de requête sera cryptée , mais y a-t-il d'autres raisons pour éviter de transmettre des données dans la chaîne de requête, comme le surf sur l'épaule?
Si la chaîne de requête est la cible d'un lien cliquable par l'utilisateur (par opposition à une URL utilisée à partir de Javascript), elle apparaîtra dans la barre d'URL du navigateur lorsque la page correspondante sera chargée. Il présente les problèmes suivants:
Par conséquent, si la chaîne de requête est une simple cible de lien dans une page HTML, les données sensibles doivent être transmises dans le cadre d'un formulaire POST, not encodé dans l'URL Avec les téléchargements programmatiques (la manière AJAX), c'est beaucoup moins un problème.
En plus des autres réponses ici, la chaîne de requête est également stockée dans les fichiers journaux du serveur Web, HTTP Proxies, et peut même être vue si SSL est utilisé en conjonction avec un outil de surveillance SSL comme Bluecoat.
Non , les données sensibles ne doivent pas être envoyées via un HTTP "GET" et doit toujours être envoyé via "POST"
Éditer:
Une autre raison pour laquelle vous devriez utiliser un POST est parce que les GET sont plus susceptibles de attaques CSRF
Les données sensibles doivent être transmises soit:
Trois raisons:
Généralement, les règles qui empêchent les falsifications de requêtes intersites (CSRF également connu sous le nom de XSRF) ne sont déclenchées que pour les requêtes POST. GET est la méthode de requête HTTP prévue pour récupérer les données d'un serveur Web qui n'a pas de autre effet (en plus de choses bénignes comme le remplissage d'un fichier journal indiquant que cette page a été demandée); POST est le protocole pour qu'un utilisateur envoie des données pour effectuer une action (par exemple, comme commander quelque chose à partir d'un site Web) ; transférer de l'argent à partir de votre compte bancaire; changer votre mot de passe). C'est un jeton CSRF aléatoire généralement requis par la plupart des frameworks pour les demandes GET, mais sera souvent requis pour les POST requêtes.
(Et tandis que Thomas Pornin et makerofthings7 ont abordé respectivement 1 et 2, j'ai mentionné les deux précédemment dans une question quelque peu similaire .)
Si cela peut être évité, je l'évite toujours. C'est juste une surface d'attaque de plus qui devrait rester fermée à moins qu'il n'y ait un besoin légitime pour permettre le passage des données dans la requête chaîne.
Il y a également toujours la possibilité que vous ou un futur développeur ne filtriez/désinfectiez pas correctement les données et n'ouvrirez pas la surface d'attaque encore plus largement. Même dans une application non sécurisée, si vous autorisez accidentellement une injection, un attaquant malveillant et injectez un script XSS et XSRF dans votre base de données et utilisez votre application non sensible pour attaquer les autres, il est donc préférable de la jouer en toute sécurité.
Le surf sur les épaules est une autre préoccupation légitime, selon l'environnement. Si votre application doit être utilisée dans un endroit où cela est possible (une bibliothèque, une cabine dans laquelle quelqu'un peut regarder et un bureau avec un bureau orienté dans la mauvaise direction, etc.), c'est un problème potentiel. Si les personnes qui utilisent votre application sont toutes dans des pièces où le bureau est pointé pour que le surf à l'épaule ne soit pas un problème, ne vous en faites pas. mais si vous ne le savez pas avec certitude, et vous ne savez pas que ce sera toujours être de cette façon, c'est une préoccupation.
Basé sur OWASP REST Security Cheat Sheet https://owasp.org/www-project-cheat-sheets/cheatsheets/REST_Security_Cheat_Sheet
Dans les demandes GET, les données sensibles doivent être transférées dans un en-tête HTTP.