2011-04-20 3 views
3

Fondamentalement, j'ai une forme ajax qui porte des informations de connexion, est-il possible de crypter le mot de passe avant qu'il envoie en ajax puis le décrypter en php?Cryptage/décryptage Javascript et PHP

Ou d'autres façons que je devrais regarder?

Un grand merci :)

Répondre

4

Il n'y a aucune raison de faire du cryptage en JavaScript ou en PHP car la solution appropriée est d'utiliser SSL (HTTPS). De nos jours, vous pouvez même obtenir des certificats qui sont approuvés dans tous les navigateurs for free donc il n'y a aucune raison de ne pas utiliser SSL. Si vous ne pouvez pas utiliser le protocole SSL pour une raison quelconque, vous pouvez obtenir une implémentation JavaScript de RSA afin de pouvoir le chiffrer localement, mais seul votre serveur peut le déchiffrer à nouveau.

+0

Grande ressource. Merci. – Joshwaa

2

Vous pouvez utiliser RC4, car je sais une implémentation de theres en PHP et Javascript. Cependant, avec n'importe quel type de cryptage, vous devrez laisser le côté client clé (pour pouvoir le crypter), ce qui signifie que toute personne ayant accès à votre page peut récupérer la clé et la déchiffrer (ce qui annule le point). Il vaudrait peut-être mieux soit le hacher côté client (et ensuite faire correspondre les hachages en PHP, si vous n'avez pas besoin de connaître le mot de passe), soit utiliser le cryptage à clé publique-privée (comme RSA), de sorte que les clients peuvent crypter, mais pas le décrypter. Pour le hachage, voir hash() et sha1 for Javascript.

Et pour RSA, consultez ce blog http://www.sematopia.com/2008/10/rsa-encrypting-in-javascript-and-decrypting-in-php/

+0

Merci pour l'information. – Joshwaa

0

Vous ne pouvez pas de manière sécurisée. vous devez utiliser https

0

Vous pouvez faire md5(password) dans JS et PHP, puis comparer les mots de passe cryptés.

Comme le nom d'utilisateur n'est pas crypté, vous pouvez l'utiliser pour récupérer le mot de passe de DB en PHP, puis le crypter.

La meilleure façon de le faire est:

  • générer un uniqid, enregistrez-le dans $_SESSION['crypt_key'], et l'envoyer comme une entrée cachée sur le formulaire ajax; Crypter dans JS en utilisant md5(crypt_key + password) avant de l'envoyer; Chiffrer en PHP en utilisant md5($_SESSION['crypt_key'] . $password) et comparez-les. De cette façon, chaque requête transférera un mot de passe crypté imprévisible.