Est-il sécurisé de soumettre un formulaire HTTP à HTTPS?

Est-il acceptable de soumettre un formulaire http via https? Il semble que cela devrait être sécurisé, mais cela permet à un homme en attaque ( voici une bonne discussion ). Il existe des sites comme mint.com qui vous permettent de vous connecter à partir d’une page http, mais publient un article https. Sur mon site, la demande est d’avoir une page de destination http, mais de pouvoir vous connecter en toute sécurité. Est-ce que cela ne vaut pas le risque de sécurité possible et devrais-je simplement demander à tous les utilisateurs de se connecter à une page sécurisée (ou de sécuriser la page de destination)?

Y a-t-il une raison de ne pas utiliser HTTPS pour toute la transaction? Si vous n’en trouvez pas un très bon, utilisez-le!

  • C’est sans doute plus simple que de changer de protocole.

  • Le risque MITM est réel.

  • Suite à votre lien, l’utilisateur “Helios” fait un excellent point sur le fait qu’utiliser 100% HTTPS est beaucoup moins déroutant pour l’utilisateur.

L’envoi d’un formulaire à partir d’une page http sur une page https cryptera les données du formulaire lorsqu’il est transmis dans les termes les plus simples. S’il y a une attaque de type “man-in-the-middle”, le navigateur vous avertira.

Cependant, si le formulaire http d’origine a été soumis à man-in-the-middle et que l’adresse https post-back a été modifiée par l’attaquant, vous ne recevrez aucun avertissement. Les données seront toujours chiffrées, mais l’attaquant «man-in-the-middle» pourra déchiffrer (depuis qu’il vous a envoyé la clé) et lire les données.

En outre, si le formulaire renvoie des informations par d’autres moyens (connexions par script), il est possible que des données non cryptées soient envoyées sur le réseau avant que le formulaire ne soit publié (bien que tout bon site Web ne le fasse jamais) .

Ce genre de chose apparaît partout sur le net, en particulier dans les sites pour lesquels la connexion est facultative. Cependant, il est insortingnsèquement dangereux, pour des raisons assez subtiles, et donne à l’utilisateur un faux sentiment de sécurité. Je pense qu’il y avait un article à ce sujet récemment sur codinghorror.com .

Le danger est que lorsque vous envoyez votre page avec une cible de message ” https: // xxx “, la page dans laquelle cette référence se produit n’est pas sécurisée, elle peut donc être modifiée par un attaquant pour pointer vers n’importe quelle URL de l’attaquant. vœux. Par conséquent, si je visite votre site, je dois consulter la source pour vérifier que mes informations d’identification sont publiées sur une adresse sécurisée et que cette vérification n’est pertinente que pour cette soumission. Si je reviens demain, je dois revoir la source, car cette livraison particulière de la page a peut-être été attaquée et la cible de la publication corrompue – si je ne vérifie pas chaque fois que la cible de la publication a été corrompue, trop tard – J’ai déjà envoyé mes identifiants à l’URL de l’attaquant.

Vous devez uniquement fournir un lien vers la page de connexion. et la page de connexion et tout ce qui suit devrait être HTTPS aussi longtemps que vous êtes connecté. Et, vraiment, il n’y a aucune raison de ne pas le faire; le fardeau de SSL est sur la négociation initiale; les connexions suivantes utiliseront la mise en cache de la session SSL et le crypto symésortingque utilisé pour les données de liaison est en réalité extrêmement faible.

Blog IE explique: Erreur critique n ° 1: pages de connexion non-HTTPS (même si elles sont soumises à une page HTTPS)

  • Comment l’utilisateur sait-il que le formulaire est envoyé via HTTPS? La plupart des navigateurs ne disposent pas d’une telle interface.
  • Comment l’utilisateur pouvait-il savoir qu’il allait sur la bonne page HTTPS? Si le formulaire de connexion a été fourni via HTTP, rien ne garantit qu’il n’a pas été modifié entre le serveur et le client.

Jay et Kiwi ont raison à propos de l’attaque MITM. Cependant, il est important de noter que l’attaquant n’a pas à casser le formulaire et à envoyer des messages d’erreur. L’attaquant peut à la place insérer JavaScript pour envoyer les données du formulaire deux fois, une fois à lui et une fois à vous.

Mais honnêtement, vous devez vous demander quelle est la chance qu’un attaquant intercepte votre page de connexion et la modifie en vol. Comment cela se compare-t-il au risque de (a) faire une attaque MITM dans la session SSL et espérer que l’utilisateur appuie sur “OK” pour continuer; (b) faire la MITM lors de votre redirection initiale vers SSL (par exemple, depuis http://example.com vers https://example.com ) et la redirect vers https://doma1n.com , qui est sous le contrôle de l’attaquant ; (c) Vous avez un défaut d’injection XSS, XSRF ou SQL quelque part sur votre site.

Oui, je vous suggère d’utiliser le formulaire de connexion sous SSL, il n’ya aucune raison de ne pas le faire. Mais je ne m’inquiéterais pas beaucoup si ce n’était pas le cas, il y a probablement beaucoup moins de fruits à suspendre.

Mettre à jour

La réponse ci-dessus date de 2008. Depuis, de nombreuses menaces supplémentaires sont apparues. Par exemple, accéder à des sites à partir de réseaux aléatoires non fiables tels que les points d’access Wi-Fi (où toute personne à proximité peut être en mesure de déclencher cette attaque). Maintenant, je dirais que oui, vous devez absolument crypter votre page de connexion et poursuivre votre site entier. De plus, il existe maintenant des solutions au problème de la redirection initiale (HTTP Ssortingct Transport Security). Le projet Open Web Application Security Project propose plusieurs guides de bonnes pratiques.

Ce post est la clé. Oui, si les données de l’utilisateur vous sont envoyées, elles seront arrivées en toute sécurité. Mais il n’y a aucune raison de croire que quelque part sera votre site. L’attaquant ne va pas seulement pouvoir écouter les données se déplacer dans chaque direction à ce stade. Il sera l’autre extrémité de la session de l’utilisateur. Votre site va juste penser que l’utilisateur n’a jamais pris la peine de soumettre le formulaire.

Pour moi (en tant qu’utilisateur final), la valeur d’une session HTTPS n’est pas uniquement le cryptage des données, mais la vérification que la page que je saisis dans mes super-secrets provient de l’endroit où je le veux. à.

Avoir le formulaire dans une session non HTTPS annule cette assurance.

(Je sais – c’est juste une autre façon de dire que le formulaire est sujet à une attaque MITM).

Non, il n’est pas sécurisé d’aller de HTTP à HTTPS. Les points d’origine et résultant de la requête doivent être HTTPS pour que le canal sécurisé soit établi et utilisé.

Tout le monde suggérant que vous fournissez uniquement un lien vers la page de connexion semble oublier que le lien pourrait facilement être modifié en utilisant une attaque MITM.

L’une des principales lacunes dans ce qui précède est qu’il y a une tendance générale à placer une connexion sur une page d’accueil (tendance énorme dans les tendances de l’expérience utilisateur).

Le gros problème ici est que Google n’aime pas chercher des pages sécurisées avec une bonne raison, donc tous ces développeurs qui se demandent pourquoi ne pas sécuriser le tout, et bien si vous voulez que votre page soit invisible pour Google, sécurisez-la. Sinon, la deuxième meilleure option pour publier de http à https est la moindre des deux maux à ce stade?

Je pense que la principale considération de cette question concerne l’URL que les utilisateurs connaissent et le schéma de protocole (http:) que les navigateurs remplacent par défaut.

Dans ce cas, le comportement normal d’un site qui souhaite garantir un canal chiffré consiste à redirect la page d’accueil http: // vers https: // page d’accueil . Il y a toujours une opportunité d’usurpation d’identité / MitM, mais si c’est par empoisonnement DNS, le risque n’est pas plus élevé que si l’on commence par https: URL. Si un autre nom de domaine revient, vous devez vous inquiéter.

C’est probablement assez sûr. Après tout, si vous êtes soumis à un MitM ciblé, vous pourriez tout aussi bien commencer à vous préoccuper des enregistreurs de clavier, de votre fichier HOSTS local et de toutes sortes d’autres méthodes pour découvrir vos transactions sécurisées impliquant votre système.