Quelle est la différence en utilisant la méthode GET
ou POST
? Lequel est plus sécurisé? Quels sont les (dés) avantages de chacun d’eux?
( question similaire )
Ce n’est pas une question de sécurité. Le protocole HTTP définit les requêtes de type GET comme étant idempotentes , alors que les POST peuvent avoir des effets secondaires. En clair, cela signifie que GET est utilisé pour afficher quelque chose, sans le modifier, tandis que POST est utilisé pour changer quelque chose. Par exemple, une page de recherche doit utiliser GET, tandis qu’un formulaire qui modifie votre mot de passe doit utiliser POST.
Notez également que PHP confond un peu les concepts. Une requête POST reçoit une entrée de la chaîne de requête et du corps de la requête. Une requête GET obtient simplement une entrée de la chaîne de requête. Une requête POST est donc un sur-ensemble d’une requête GET; vous pouvez utiliser $_GET
dans une requête POST, et il peut même être judicieux d’avoir des parameters portant le même nom dans $_POST
et $_GET
qui signifient des choses différentes.
Par exemple, supposons que vous ayez un formulaire pour éditer un article. L’article-id peut être dans la chaîne de requête (et, par conséquent, disponible via $_GET['id']
), mais supposons que vous souhaitiez modifier l’ID d’article. Le nouvel identifiant peut alors être présent dans le corps de la requête ( $_POST['id']
). OK, peut-être que ce n’est pas le meilleur exemple, mais j’espère que cela illustre la différence entre les deux.
Lorsque l’utilisateur entre des informations dans un formulaire et clique sur Envoyer, les informations peuvent être envoyées du navigateur au serveur de deux manières: dans l’URL ou dans le corps de la requête HTTP.
La méthode GET, utilisée dans l’exemple précédent, ajoute des paires nom / valeur à l’URL. Malheureusement, la longueur d’une URL est limitée, donc cette méthode ne fonctionne que s’il n’y a que quelques parameters. L’URL peut être tronquée si le formulaire utilise un grand nombre de parameters ou si les parameters contiennent de grandes quantités de données. De plus, les parameters transmis sur l’URL sont visibles dans le champ d’adresse du navigateur, ce qui n’est pas le meilleur endroit pour afficher un mot de passe.
L’alternative à la méthode GET est la méthode POST. Cette méthode regroupe les paires nom / valeur dans le corps de la requête HTTP, ce qui crée une URL plus propre et n’impose aucune limite de taille à la sortie des formulaires. C’est aussi plus sécurisé.
La meilleure réponse était la première.
Vous utilisez:
Voici le point clé de la demande GET
et voici le point clé de la demande POST
L’utilisation de GET a deux implications communes pour la “sécurité”. Étant donné que les données apparaissent dans la chaîne d’URL, il est possible que quelqu’un qui regarde par-dessus votre épaule à la barre d’adresse / URL puisse voir quelque chose auquel il ne devrait pas avoir access, comme un cookie de session qui pourrait potentiellement détourner votre session. Gardez à l’esprit que tout le monde a un téléphone avec appareil photo.
L’autre implication de sécurité de GET concerne les variables GET enregistrées dans la plupart des journaux d’access des serveurs Web dans le cadre de l’URL de demande. Selon la situation, le climat réglementaire et la sensibilité générale des données, cela peut potentiellement poser problème.
Certains clients / pare-feu / systèmes IDS peuvent être désapprouvés par les demandes GET contenant une quantité excessive de données et peuvent donc fournir des résultats non fiables.
POST prend en charge les fonctionnalités avancées telles que la prise en charge de l’entrée binary en plusieurs parties utilisée pour les téléchargements de fichiers sur les serveurs Web.
POST requirejs un en-tête de longueur de contenu qui peut augmenter la complexité d’une implémentation client spécifique à une application, car la taille des données soumises doit être connue à l’avance, empêchant ainsi la formation d’une requête client en mode incrémentiel en une seule passe. pour ceux qui choisissent d’abuser de HTTP en l’utilisant comme transport RPC.
D’autres ont déjà fait du bon travail en couvrant les différences sémantiques et la partie “quand” de cette question.
J’utilise GET lorsque je récupère des informations à partir d’ une URL et de POST lorsque j’envoie des informations à une URL.
Vous devez utiliser POST s’il y a beaucoup de données ou des informations sensibles (des éléments très sensibles nécessitent également une connexion sécurisée).
Utilisez GET si vous souhaitez que les utilisateurs puissent append un signet à votre page, car toutes les données sont incluses dans le signet.
Il suffit de faire attention aux personnes qui appuient sur REFRESH avec la méthode GET, car les données seront à nouveau envoyées à chaque fois sans avertir l’utilisateur (le POST avertit parfois l’utilisateur de renvoyer des données).
Les méthodes Get et Post n’ont rien à voir avec la technologie de serveur que vous utilisez, elle fonctionne de la même manière dans php, asp.net ou ruby. GET et POST font partie du protocole HTTP. Comme noté, le POST est plus sécurisé. Les formulaires POST ne sont pas non plus mis en cache par le navigateur. Le POST est également utilisé pour transférer de grandes quantités de données.
Ce document W3C explique l’utilisation de HTTP GET et POST.
Je pense que c’est une source faisant autorité.
Le résumé est (section 1.3 du document):
- Utilisez GET si l’interaction ressemble plus à une question (c’est-à-dire qu’il s’agit d’une opération sûre telle qu’une requête, une opération de lecture ou une recherche).
- Utilisez POST si:
- L’interaction ressemble plus à un ordre, ou
- L’interaction modifie l’état de la ressource de manière à ce que l’utilisateur puisse percevoir (par exemple, un abonnement à un service), ou
- L’utilisateur doit être tenu responsable des résultats de l’interaction.
La raison de l’utilisation de POST lors de la modification de données:
De même, ne placez pas d’informations sensibles dans la chaîne de requête (option uniquement avec GET) car elle apparaît dans la barre d’adresse, les signets et les journaux du serveur.
J’espère que cela explique pourquoi les gens disent que le POST est «sécurisé». Si vous transmettez des données sensibles, vous devez utiliser SSL.
GET
et POST
sont des méthodes HTTP qui peuvent atteindre des objectives similaires
GET
est essentiellement utilisé pour obtenir (récupérer) des données, un GET
ne devrait pas avoir de corps, à part les cookies, le seul endroit où passer des informations est dans l’URL et les URL sont de longueur limitée. envoyé fait partie de l’URL
N’utilisez jamais GET
lors de l’envoi de mots de passe, de cartes de crédit ou d’autres informations sensibles !, les données sont visibles par tous dans l’URL, peuvent être des données mises en cache. GET
est inoffensif lorsque vous rechargez ou rappelez le bouton, il sera marqué, les parameters restnt dans l’historique du navigateur, seuls les caractères ASCII sont autorisés.
POST
peut impliquer n’importe quoi, comme stocker ou mettre à jour des données, ou commander un produit ou envoyer un courrier électronique. POST
méthode POST
a un corps.
POST
méthode POST
est sécurisée pour la transmission d’informations sensibles et confidentielles au serveur, elle ne sera pas visible dans les parameters de requête dans l’URL et les parameters ne sont pas enregistrés dans l’historique du navigateur. Il n’y a pas de ressortingctions sur la longueur des données. Lorsque nous rechargeons le navigateur, celui-ci doit alerter l’utilisateur que les données sont sur le point d’être soumises à nouveau. POST
méthode POST
ne peut pas être mise en signet
Utilisez la méthode GET si vous souhaitez récupérer les ressources depuis l’URL. Vous pouvez toujours voir la dernière page si vous appuyez sur le bouton de retour de votre navigateur, et cela peut être mis en signet, donc ce n’est pas aussi sûr que la méthode POST.
Utilisez la méthode POST si vous souhaitez “soumettre” quelque chose à l’URL. Par exemple, vous souhaitez créer un compte Google et vous devrez peut-être remplir toutes les informations détaillées, puis vous cliquez sur le bouton «Soumettre» (la méthode POST est appelée ici), une fois que vous soumettez avec succès et essayez d’appuyer sur le bouton de votre navigateur. , vous obtiendrez une erreur ou un nouveau formulaire vierge, au lieu de la dernière page avec le formulaire rempli.
Selon l’explication de w3cschools.com
Pour obtenir la méthode:
Les requêtes GET peuvent être mises en cache
Les requêtes GET restnt dans l’historique du navigateur
Les requêtes GET peuvent être mises en signet
Les requêtes GET ne doivent jamais être utilisées pour traiter des données sensibles
Les demandes GET ont des ressortingctions de longueur
Les requêtes GET ne doivent être utilisées que pour récupérer des données
Pour la méthode post
Les requêtes POST ne sont jamais mises en cache
Les requêtes POST ne restnt pas dans l’historique du navigateur
Les demandes POST ne peuvent pas être mises en signet
Les requêtes POST n’ont aucune ressortingction sur la longueur des données
Obtenez plus de détails sur
La méthode GET
:
Il est utilisé uniquement pour l’envoi de date de 256 caractères
En utilisant cette méthode, les informations peuvent être vues sur le navigateur
C’est la méthode par défaut utilisée par les formulaires
Ce n’est pas si sécurisé.
La méthode POST
:
Il est utilisé pour envoyer des données illimitées.
Avec cette méthode, les informations ne peuvent pas être vues sur le navigateur
Vous pouvez explicitement mentionner la méthode POST
Il est plus sécurisé que la méthode GET
Il fournit des fonctionnalités plus avancées