Réponses:
Oui, ça l'est. Mais utiliser GET pour des données sensibles est une mauvaise idée pour plusieurs raisons:
Par conséquent, même si Querystring est sécurisé, il n'est pas recommandé de transférer des données sensibles sur Querystring.
[1] Bien que je doive noter que RFC indique que le navigateur ne doit pas envoyer de référents de HTTPS à HTTP. Mais cela ne signifie pas qu'une mauvaise barre d'outils de navigateur tiers ou une image / flash externe d'un site HTTPS ne la fuira pas.
History caches in browsers
ou ajouter une référence pour ir?
Du point de vue de "renifler le paquet réseau", une demande GET est sûre, car le navigateur établira d'abord la connexion sécurisée puis enverra la demande contenant les paramètres GET. Mais les URL GET seront stockées dans l'historique du navigateur de l'utilisateur / saisie semi-automatique, ce qui n'est pas un bon endroit pour stocker, par exemple, les données de mot de passe. Bien sûr, cela ne s'applique que si vous prenez la définition plus large de "Webservice" qui pourrait accéder au service à partir d'un navigateur, si vous n'y accédez qu'à partir de votre application personnalisée, cela ne devrait pas poser de problème.
Il est donc préférable d'utiliser post au moins pour les boîtes de dialogue de mot de passe. De plus, comme indiqué dans le lien que littlegeek a publié, une URL GET est plus susceptible d'être écrite dans les journaux de votre serveur.
Oui , vos chaînes de requête seront cryptées.
La raison en est que les chaînes de requête font partie du protocole HTTP qui est un protocole de couche application, tandis que la partie sécurité (SSL / TLS) provient de la couche transport. La connexion SSL est d'abord établie, puis les paramètres de requête (qui appartiennent au protocole HTTP) sont envoyés au serveur.
Lors de l'établissement d'une connexion SSL, votre client effectuera les étapes suivantes dans l'ordre. Supposons que vous essayez de vous connecter à un site nommé example.com et que vous souhaitez envoyer vos informations d'identification à l'aide des paramètres de requête. Votre URL complète peut ressembler à ceci:
https://example.com/login?username=alice&password=12345)
example.com
en adresse IP à l' (124.21.12.31)
aide d'une demande DNS. Lors de l'interrogation de ces informations, seules les informations spécifiques au domaine sont utilisées, c'est-à-dire que seules example.com
seront utilisées.124.21.12.31
et tentera de se connecter au port 443 (le port de service SSL n'est pas le port HTTP 80 par défaut).example.com
enverra ses certificats à votre client.Par conséquent, vous n'exposerez pas de données sensibles. Cependant, l'envoi de vos informations d'identification via une session HTTPS à l'aide de cette méthode n'est pas le meilleur moyen. Vous devriez opter pour une approche différente.
(e.g http://example.com/login?username=alice&password=12345)
.
Oui. Le texte entier d'une session HTTPS est sécurisé par SSL. Cela inclut la requête et les en-têtes. À cet égard, un POST et un GET seraient exactement les mêmes.
En ce qui concerne la sécurité de votre méthode, il n'y a pas de véritable moyen de dire sans inspection appropriée.
SSL se connecte d'abord à l'hôte, donc le nom d'hôte et le numéro de port sont transférés en texte clair. Lorsque l'hôte répond et que le défi réussit, le client crypte la requête HTTP avec l'URL réelle (c'est-à-dire quoi que ce soit après la troisième barre oblique) et l'envoie au serveur.
Il existe plusieurs façons de briser cette sécurité.
Il est possible de configurer un proxy pour agir comme un "homme au milieu". Fondamentalement, le navigateur envoie la demande de connexion au serveur réel au proxy. Si le proxy est configuré de cette façon, il se connectera via SSL au serveur réel mais le navigateur parlera toujours au proxy. Ainsi, si un attaquant peut accéder au proxy, il peut voir toutes les données qui le traversent en texte clair.
Vos demandes seront également visibles dans l'historique du navigateur. Les utilisateurs pourraient être tentés de mettre le site en signet. Certains utilisateurs ont installé des outils de synchronisation de signets, de sorte que le mot de passe pourrait se retrouver sur deli.ci.us ou un autre endroit.
Enfin, quelqu'un a peut-être piraté votre ordinateur et installé un enregistreur de clavier ou un grattoir d'écran (et beaucoup de virus de type cheval de Troie le font). Étant donné que le mot de passe est visible directement sur l'écran (par opposition à "*" dans une boîte de dialogue de mot de passe), c'est un autre trou de sécurité.
Conclusion: en matière de sécurité, comptez toujours sur les sentiers battus. Il y a trop de choses que vous ne savez pas, auxquelles vous ne penserez pas et qui vous briseront le cou.
Oui, tant que personne ne regarde par-dessus votre épaule vers le moniteur.
Je ne suis pas d'accord avec l'énoncé sur la fuite [...] de référents HTTP (une image externe dans la page cible pourrait divulguer le mot de passe) dans la réponse de Slough .
La RFC HTTP 1.1 indique explicitement :
Les clients NE DEVRAIENT PAS inclure un champ d'en-tête Referer dans une requête HTTP (non sécurisée) si la page de référence a été transférée avec un protocole sécurisé.
Quoi qu'il en soit, les journaux du serveur et l'historique du navigateur sont des raisons plus que suffisantes de ne pas placer de données sensibles dans la chaîne de requête.
Vous pouvez envoyer un mot de passe en tant que paramètre de hachage MD5 avec du sel ajouté. Comparez-le côté serveur pour l'authentification.