Get ou Post

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Get ou Post

par iclo » 30 août 2006, 09:47

A la base, la méthode GET était prévue uniquement pour "demander" une ressource à un serveur web (sans passer de paramêtre) et la méthode POST pour passer des informations à un serveur. Et puis comme souvent en informatique, on a fait des compromis 8) 8)

par Ripat » 30 août 2006, 09:27

Ryle +1

On se satisfait souvent de la sécurité illusoire de la méthode POST car on pense que comme on ne voit pas les variables dans l'url, celles-si sont sécurisées. Loin s'en faut. Elle sont, tout comme par GET, transmises en clair. De plus, on peut facilement simuler l'envoi d'un formulaire en transmettant le header approprié par sockets ou, plus facilement encore, avec CURL.

POST est, il est vrai, un peu plus confidentiel dans le sens où par GET, il suffirait de se pencher au dessus de l'épaule d'un utilisateur pour lui piquer son mot de passe.

Juste pour illustrer le problème de transmettre des données sensibles par GET ou POST, voici un petit exemple:

Voici un bête formulaire de deux champs:

Code : Tout sélectionner

<form method="POST" action="aaa.php"> <input type="text" name="nom" /><br /> <input type="password" name="pass" /><br /> <input type="submit" value="Envoyer" /> </form>
Voici les trames (facilement) capturées (ici par tcpdump):


POST /test/aaa.php HTTP/1.1
User-Agent: Opera/9.01
Host: debian
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*1
Accept-Language: fr,fr-BE;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://debian/test/test.php
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
Content-Length: 215
Content-Type: multipart/form-data; boundary=----------I1w1EgLcZsSZT5bxg4igvI
------------I1w1EgLcZsSZT5bxg4igvI
Content-Disposition: form-data; name="nom"
moi
------------I1w1EgLcZsSZT5bxg4igvI
Content-Disposition: form-data; name="pass"
hello
-----------I1w1EgLcZsSZT5bxg4igvI--



Si, vraiment, c'est la sécurité qui compte --> SSL

par Ryle » 30 août 2006, 08:19

La méthode POST en revanche ne permet pas cette manipulation et ne fonctionne qu'à partir d'un formulaire.
C'est un peu plus compliqué que de juste changer les paramètre dans l'url avec la méthode POST, mais ce n'est pas pour autant qu'on ne peut pas trafiquer les valeurs envoyées. Ce n'est pas à la porter du premier venu certes, mais c'est possible et il vaut mieux toujours contrôler les paramètres "sensibles" que tu reçois que tu sois en GET ou POST.

L'une des différences nottoire également entre GET et POST c'est que comme toutes les données sont présentes dans l'url en GET, tu peux actualiser, faire des précédents/suivants, etc. sur ta page, les données sont "repostées" automatiquement pour afficher la page.
En POST, le navigateur te demandera une confirmation pour renvoyer les données du formulaire.
A voir ensuite si la page afit des insert, il vaut mieux éviter de renvoyer les données en appuyant juste sur F5. S'il s'agit juste d'un affichage (comme sur ce forum), c'est plus agréable de pas avoir à confirmer à chaque fois quand on accède à une page ;)

A voir également le pattern "PRG" (Post - Redirect - Get) consistant à récupérer les données en Post, faire le traitement demandé, et Rediriger l'utilisateur vers une page en Get pour gérer cela :)

par Fabien-I » 30 août 2006, 07:09

Merci beaucoup pour l'explication clair !

par Cyrano » 28 août 2006, 08:00

Quels sont les points avantages de ces 2 options ?
L'avantage de l a méthode GET, c'est qu'elle dispense de l'utilisation d'un formulaire, mais comme je l'expliquais plus haut, elle permet à l'internaute d'envoyer des paramètres bidons en modifiant manuellement l'url dans la barre d'adresse de son navigateur.

La méthode POST en revanche ne permet pas cette manipulation et ne fonctionne qu'à partir d'un formulaire.

Ce qui est important, c'est de choisir en fonction du traitement qui doit être fait avec les données envoyées. Si les données doivent donner lieu à un échange avec une base de données, on évitera la méthode GET pour court-circuiter les possibilités d'injection SQL et de piratage. Mais pour afficher des pages dans un système de pseudo-frame par exemple, on peut parfaitement utiliser la méthode GET : index.php?page=accueil, index.php?page=nouvelles, etc...

J'ajoute enfin que la méthode GET est limitée : une url ne peut excéder une certaine longueur et il ne sera pas possible d'utiliser la méthode GET avec un gros formulaire si l'ensemble des données représente une quantité de caractères supérieure à 500 à 800 selon le navigateur.

Dernier point : les urls paramétrées sont moins bien référencées dans les moteurs de recherche et Google par exemple n'indexe pas les pages qui comportent plus de trois paramètres.

par albat » 28 août 2006, 07:52

La méthode GET te permet de passer des paramètres
sans nécessiter un formulaire et donc une action de l'utilisateur.

On va dire que c'est plus "léger", très simple à mette en oeuvre et à l'emploi.

par Fabien-I » 28 août 2006, 06:10

Salut,

Si la méthode POST est plus sécurisé que la méthode GET, pourquoi la plupart utilisent GET ?

Quels sont les points avantages de ces 2 options ?

Amicalement !

par Arno76 » 27 août 2006, 22:36

Merci

je panser aussi post mes je voulais l avis de quelqu un qui si connais mieux que moi.

Bonne soiré :D :wink:

par Cyrano » 27 août 2006, 22:13

POST sera plus sécurisé parce que les données ne sont pas affichées comme avec GET dans l'url et donc non manipulable. Avec GET en effet, rien n'empèche un internaute de modifier manuellement une url pour envoyer des paramètres bidons dans un but qui pourrait éventuellement se révéler malveillant.

Mais si tu précises davantage ta question, tu auras peut-être une réponse plus appropriée. :-k

Get ou Post

par Arno76 » 27 août 2006, 21:46

Bonjour,

J aimerai savoir quelle est la plus securiser en get ou post ?

Merci :D