2010-08-27 11 views
0

Je travaille sur une boîte de dialogue de connexion à mon site. Pour épargner aux utilisateurs la frustration de devoir se souvenir de leurs détails de connexion, je veux coopérer avec les gestionnaires de mots de passe du navigateur intégré. J'ai trouvé que pour que Firefox joue à la balle, je dois utiliser un formulaire HTML simple. Bien, soit. Cependant, je ne vais pas transférer de mots de passe non cryptés. Ainsi, le contenu de mon formulaire ressemble à ceci:Les gestionnaires de mots de passe du navigateur m'ont dérouté

input#1 type="text" name="login" 
input#2 type="password" 
input#3 type="hidden" name="passwd" 

je puis intercepter le soumettre et crypter le contenu de n ° 2 en # 3, et hors se forme. Fonctionne un régal dans IE et Firefox, pas dans Opera et Chrome. Juste spoilée autour de SO et trouve que le problème est l'entrée # 2, qui n'a pas d'attribut "name". Un test rapide révèle que lorsque j'ajoute name = "ignore", cela fonctionne effectivement dans Chrome et Opera. Seul problème est que le mot de passe est maintenant envoyé à travers le texte brut du réseau, avec l'étiquette "ignore". Merci beaucoup. Le point entier d'omettre le "nom" était d'omettre ce champ du formulaire.

Y a-t-il un moyen de supprimer l'entrée # 2 tout en lui donnant un "nom"? Ou y a-t-il un autre truc que je pourrais utiliser?

Merci.

+0

Err, comment vous vous tranfering mots de passe crypté? Ne dites pas JavaScript, car ce ne sera pas un cryptage sécurisé. – RoToRa

+0

Ce n'est pas vraiment une réponse, alors envoyez un commentaire à la place - mais pourquoi vous inquiétez-vous d'envoyer le mot de passe non crypté. C'est ce que HTTPS est pour (cryptage au niveau du transport). Cela dit, je ne suis pas sûr qu'il existe un moyen fiable de faire cela. Pouvez-vous réécrire la valeur de l'entrée n ° 2 avant de l'envoyer en utilisant JS peut-être? De cette façon, il sera envoyé (et le serveur peut l'ignorer), mais ce ne sera pas la valeur sensible qui vous inquiète. –

+0

Oui, j'utilise le cryptage JS. La sécurité de ce qui peut être discutable, mais c'est certainement une amélioration sur le texte clair. Mon plan initial était d'aller SSL. Après délibération, je me suis résigné au fait que je ne peux faire confiance à aucun client - SSL ou non. Compte tenu des frais généraux considérables qui viennent avec SSL (il crypte des tonnes de plus que nécessaire/utile), j'ai décidé de ne pas le faire. Je pourrais réécrire # 2, je suppose, accepter le FOC et doit revenir à nouveau # 2 quand le mot de passe est rejeté par le serveur (pour autoriser l'édition par l'utilisateur). – Ollie2893

Répondre

1

La réponse dans le sens le plus étroit de la question initiale est: oui, c'est possible via Ajax. Créez un FORMULAIRE vanille avec deux INPUT nommés et envoyez un BOUTON. (N'oubliez pas de simuler une action dans les attributs FORM.) Maintenant, il ressemble à une affaire HTML en texte brut. Ensuite, dans JS, interceptez l'onsubmit à partir du formulaire et lancez une requête Ajax à votre script PHP, POSTing le login et hashed mot de passe. Renvoie FALSE à partir de la sous-diffusion pour supprimer l'action de FORM. Vous avez terminé. Plus de mots de passe en texte brut à travers le fil ...