Un nom d'utilisateur et un mot de passe peuvent-ils être envoyés en toute sécurité sur HTTPS via les paramètres D'URL?

un collègue et moi avons eu un débat houleux hier pour savoir s'il est sûr d'envoyer des identifiants de connexion via les paramètres URL comme moyen d'authentification. Il a correctement souligné que HTTPS crypte tous les caractères non-Nom d'hôte/port dans une URL avant d'envoyer une requête du côté du serveur.

cependant, je pense toujours qu'il y a des cas limites ici où il est possible de voler ces justificatifs, et je pense qu'ils devraient être envoyés via un post HTTPS. Est-ce réellement un moyen sûr de l'envoi de données de connexion / token?

33
demandé sur Peter Bratton 2009-05-06 19:07:34

6 réponses

L'URL demandée peut se montrer dans journaux de serveur Web et l'historique du navigateur/signets qui n'est pas une bonne chose.

44
répondu Mehrdad Afshari 2009-05-06 20:51:08

faites un pas supplémentaire si vous avez une base de données back-end. Soumettez le nom d'utilisateur et le mot de passe par l'intermédiaire d'un formulaire post, demandez à votre back-end de retourner un token (une interface graphique le fera), écrivez le token à une table de base de données et assignez une date d'expiration, puis utilisez ce token dans la interrogation à la place des justificatifs d'identité. Maintenant votre système sera très sécurisé, et vous avez un identifiant de session unique en plus.

29
répondu RichO 2009-05-06 15:26:21

en ce qui concerne la transmission des lettres de créance, il a raison. Mais il y a beaucoup d'autres choses à considérer, comme l'histoire de brwser, les logfiles de serveur, les utilisateurs regardant l'écran, etc. ce qui serait un risque dans ce cas.

8
répondu Lucero 2009-05-06 15:13:09

est un grand mot. SSH empêchera les autres utilisateurs de le récupérer, mais voulez-vous vraiment montrer le mot de passe de quelqu'un sur le questionnaire. Quel est le mec debout sur les utilisateurs de l'épaule? Qu'en injection SQL? Très mauvaise idée, au moins le Border dans un poteau de forme.

5
répondu Joshua Belden 2009-05-06 15:10:13

Je n'avais aucune idée que HTTPS avait aussi crypté L'URL, c'est bon à savoir.

cependant, du point de vue de la sécurité, je serais plus ennuyé par le fait que les informations d'identification peuvent être lues dans la barre D'URL. Sans mentionner peut-être stocké dans l'histoire du navigateur.

5
répondu Robin Day 2009-05-06 15:12:10

il y a aussi une autre solution que j'essaie. Vous pouvez utiliser des gestionnaires PHP Pour session, pour stocker des données de session directement dans votre base de données comme une chaîne de caractères facilement avec ses gestionnaires. Vous aurez besoin d'une table de session dans votre DB avec une date d'expiration. Une fois que vous avez envoyé les données de connexion HTTPS, si elles sont correctes, vous pouvez les stocker dans la variable $_SESSION, et si vous avez bien fait l'interface, elle ira dans votre base de données. Puisque cela n'est pas exposé en dehors de PHP, vous aurez un système de connexion robuste, et dans le client cookies il N'y a que L'ID de session stocké plutôt que des jetons, des comptes ou d'autres données sensibles.

référence: http://es.php.net/manual/en/function.session-set-save-handler.php

1
répondu StormByte 2011-05-05 01:06:03