J'ai un mot de passe étant passé de mon application iPhone à la base de données via un script php, utilisateur.php.
La variable $ passe passe par les éléments suivants: p> Comment puis-je crypter ceci avant qu'il ne soit inséré dans ma base de données? J'ai lu un peu sur les différentes techniques, mais à la recherche du meilleur moyen de gérer cela. P> Merci à tout le monde. P> p>
7 Réponses :
la plus basique: hachage avec MD5 ou SHA1
$newpass = sha1($_REQUEST['pass']);
@Chris pour l'enregistrement, le hachage est une forme de cryptage (bien qu'aubri vaccement). Quoi qu'il en soit, le MD5 ne devrait jamais être utilisé pour stocker des mots de passe. Avec les tables arc-en-ciel d'aujourd'hui, c'est aussi bien que sifflent.
Jamais dit que le hachage n'est pas une forme de cryptage, je viens de dire que MD5 n'est pas pour cryptage. Alors, pourquoi suggérez-vous d'utiliser MD5 pour "chiffrer" les mots de passe de l'OP. Au moins expliquer dans votre réponse, cela avant de créer un autre utilisateur avec un sens de la sécurité compliqué en utilisant MD5 pour le cryptage de mot de passe.
@Chris Vous ne voulez pas chiffrer les mots de passe, vous voulez les hacher. J'étais édition pour ajouter du salage, qui élimine la vulnérabilité de la table arc-en-ciel ... Bien que je soutiens toujours que si quelqu'un entre dans votre base de données pour obtenir les hachages, aucun cryptage ne va vous sauver. Je ne voudrais pas "crypter" des mots de passe parce que je ne les veux pas, et je ne veux pas qu'il y ait un moyen de les inverser.
A par mot de passe / sel d'utilisateur est une meilleure idée.
Je suis content de Just Sha1 Hashing. Ce n'est pas un système bancaire, juste un forum. Si quelqu'un veut vraiment pirater et obtenir les mots de passe, pas beaucoup, ils peuvent faire avec eux. J'ajoute de hachage pour fournir juste un peu de sécurité supplémentaire.
Utilisez PHP's bibliothèque de crypte . MD5 n'est pas cryptage, il s'agit de hachage. P>
Aussi, sel vos mots de passe. Pourquoi? P>
Utilisez crypt avec du sel. Tels que comme sur http : //www.ibm.com/developerworks/opensource/library/os-php-crypt/ p> p>
Bien que la réponse ci-dessous soit techniquement correcte, PHP dispose de nouvelles recommandations concernant les algorithmes de hachage à utiliser. Licite recommandation , à partir de PHP> = 5.5. 0, est d'utiliser le Une chose, pour en faire un peu plus en sécurité consiste à ajouter un sel au hasch et à exécuter la fonction de hachage à nouveau. Cela rend plus difficile de générer un mot de passe hydraulique par malveillance car la valeur de sel est manipulée uniquement du serveur. Password_hash code>
et Password_verify code>
fonctions à hachage et vérifiez mots de passe hachés. En tant que prestation ajoutée, ces fonctions incluent automatiquement un sel individualisé dans le cadre du hachage retourné. Vous n'avez donc pas besoin de vous inquiéter de cela explicitement.
Exemple: strong>
$ passe = SHA1 ($ _ demande ['PASS']);
code> p>
Exemple: strong>
$ PASS = SHA1 (SHA1 ($ _ Demande ['Pass']). SHA1 ("MySalt @ $ # em> (%"));
code> p>
Ce n'est pas un bon sel. Un sel n'est pas le même pour chaque utilisateur d'une application. Au lieu de cela, il est spécifique à l'utilisateur.
J'ai utilisé celui-ci. Cela fonctionne et n'a pas besoin d'être super cryptique.
Vous devez utiliser SHA1 sur HASH vos mots de passe pour stockage dans la base de données. C'est le moyen le plus simple et le plus efficace de stocker des mots de passe: C'est aussi exceptionnellement sûr. Bien que l'intégrité de ce soit commence à ramper, il est assez facile de mettre à niveau cette fonction sur SHA-256 (qui est incroyablement sécurisé). P> P>
SHA1 est trop rapide. Voir le lien dans ma réponse.
@Middus C'est certainement trop rapide, mais il utilise 30% de plus d'espace que MD5. Au moins, au moins les tables sont plus grandes. De plus, si quelqu'un a suffisamment accès à votre base de données pour rassembler les mots de passe hachés, il est probable que elles puissent voler beaucoup d'autres informations non cryptées. SHA1 n'est pas "super", mais ça va faire dans 95% des scénarios.
Pour savoir pourquoi MD5, SHA1 et leurs amis rapides pourraient ne pas être une bonne idée, vous devriez lire le message assez avec les tables arc-en-ciel: ce que vous devez savoir sur les schémas de mots de passe sécurisés par Thomas Ptacek. Le gist: p>
Enfin, nous avons appris que si nous voulons stocker des mots de passe en toute sécurité nous avons trois Options raisonnables: Schéma MD5 de PHK, Provos-Maziere's BCRYPT Schéma, et SRP. Nous avons appris que le bon Le choix est BCRYPT. P> blockQuote>
Remarque: c'est phk, pas php. p>
Tout d'abord, vous devez créer un sel d'utilisateur aléatoire. Ensuite, vous devez stocker cela et le hachage de mot de passe dans la base de données.
$user = query('SELECT * FROM `user` WHERE username = ?', array($_REQUEST['username'])); if($user) { // If the password they give maches if($user->pass === sha1($user->salt. $_REQUEST['pass'])) { // login } else { // bad password } } else { // user not found }
Non liée: Utilisez une entrée appropriée qui s'échappe et ne reposez pas sur
str_replace code> pour filtrer toutes les apostrophes
Il vient d'une application iPhone, passée par URL au script.
Voir également l'openwall's Cadre de hachage PHP portable (PHPASS). Son durcit contre un certain nombre d'attaques communes sur les mots de passe utilisateur.