web-dev-qa-db-fra.com

Quel est le niveau de sécurité d'un POST HTTP?

Le POST est-il suffisamment sécurisé pour envoyer les informations d'identification de connexion?

Ou est-ce qu'une connexion SSL est un doit ?

64
Matt

SSL est un must. POST n'est pas plus sûr que GET, car il est également envoyé non chiffré. SSL couvrira l'ensemble de la communication HTTP et cryptera les données HTTP envoyées entre le client et le serveur.

74
Gumbo

<shameless plug>J'ai un article blog qui explique en quoi ressemble une demande HTTP et comment une demande GET se compare à une demande POST. Par souci de brièveté, GET:

GET /?page=123 HTTP/1.1 CRLF
Host: jasonmbaker.wordpress.com CRLF
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF
Connection: close CRLF

et POST:

POST / HTTP/1.1 CRLF
Host: jasonmbaker.wordpress.com CRLF
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_6; en-us) AppleWebKit/525.27.1 (KHTML, like Gecko) Version/3.2.1 Safari/525.27.1 CRLF
Connection: close CRLF
CRLF
page=123

(Le CRLF est juste une nouvelle ligne)

Comme vous pouvez le constater, la seule différence entre la manière dont une demande est formée * est qu’une demande POST utilise le mot POST et que les données du formulaire sont envoyées dans le corps de la demande et l’URI . Ainsi, utiliser HTTP POST est synonyme de sécurité par obscurité. Si vous souhaitez protéger les données, vous devez utiliser SSL.

* Notez qu'il y a il y a d'autres différences .

39
Jason Baker

Cela dépend de votre situation. Combien coûterait l'interception des justificatifs d'identité?

S'il ne s'agit que d'une connexion à un site logiciel Q + A, le protocole SSL n'est peut-être pas nécessaire. S'il s'agit d'un site de banque en ligne ou si vous stockez des données de carte de crédit, c'est le cas.
Il s’agit d’une décision commerciale et non technique.

8
Martin Beckett

HTTP POST n'est pas crypté, il peut être intercepté par un renifleur de réseau, par un proxy ou divulgué dans les journaux du serveur avec un niveau de journalisation personnalisé. Oui, POST est préférable à GET car les données POST ne sont pas habituellement enregistrées par un proxy ou un serveur, mais pas sécurisé . Pour sécuriser un mot de passe ou d’autres données confidentielles, vous devez utiliser SSL ou chiffrer les données avant de procéder au POST. Une autre option consisterait à utiliser l'authentification Digest avec le navigateur (voir RFC 2617). N'oubliez pas que le cryptage (développé localement) n'est pas suffisant pour empêcher les attaques par relecture, vous devez concaténer un nonce et d'autres données (par exemple, un royaume) avant le cryptage (voir la RFC 2617 pour savoir comment cela est fait dans Digest Auth).

6
user124546

SSL est un must :)

HTTP Post est transmis en texte brut. Pour un exemple, téléchargez et utilisez Fiddler pour surveiller le trafic HTTP. Vous pouvez facilement y voir l'intégralité du message (ou via un moniteur de trafic réseau tel que WireShark).

5
Ken Pespisa

Ce n'est pas sécurisé. Un POST peut être détecté aussi facilement qu'un GET.

4
driis

Non ... POST n'est pas assez sécurisé du tout. SSL est un MUST.

Le POST masque efficacement les paramètres dans la chaîne de requête. Quiconque surveille le trafic entre le navigateur et le point final peut toujours détecter ces paramètres.

2
Justin Niessner

Le moyen le plus sûr est de ne pas envoyer les informations d'identification du tout.

Si vous utilisez Digest Authentication , alors SSL est PAS un must.

(NB: je n'implique pas que l'authentification Digest via HTTP est toujours plus sécurisée que d'utiliser POST sur HTTPS).

2
ykaganovich

POST est un texte en clair.

Une connexion sécurisée est un must.

C'est pourquoi on appelle cela une connexion sécurisée.

1
yfeldblum

Non, utilisez SSL.

Avec POST, les valeurs sont toujours soumises sous forme de texte brut, sauf si SSL est utilisé.

1
Dana Holt

La seule différence entre HTTP GET et HTTP POST réside dans la manière dont les données sont codées. Dans les deux cas, il est envoyé en clair.

Afin de fournir toute sorte de sécurité pour les identifiants de connexion, HTTPS est un must.

Vous n'avez pas besoin non plus d'un certificat coûteux pour fournir le protocole HTTPS. Il existe de nombreux fournisseurs qui émettront des certificats très basiques pour environ 20 USD. Les plus onéreuses incluent la vérification de l'identité, qui préoccupe davantage les sites de commerce électronique.

1
tadman

S'il vous plaît voir cet excellent article:

Protéger contre les POST requêtes malveillantes

https://perishablepress.com/protect-post-requests/

0
SandroMarques

Une demande POST seule n'est pas sécurisée, car toutes les données sont "en déplacement" en texte brut.

Vous avez besoin de SSL pour le sécuriser.

0
rogeriopvl

Les données POST sont envoyées en texte brut si vous utilisez une connexion HTTP non chiffrée . Si cela est suffisamment sécurisé dépend de votre utilisation (indice: ce n'est pas le cas) 

Si le serveur, la machine cliente et TOUTES LES MACHINES ENTRE elles font partie d’un réseau entièrement sécurisé et contrôlé, cela peut être correct. 

En dehors de ces circonstances très limitées (et parfois même à l'intérieur de celles-ci), l'authentification en texte brut pose problème.

0
cmason