J'ai fait beaucoup de googling et de ne pas trouver tout ce que je cherche ...
Je travaille à resserrer l'authentification pour mon site web. J'ai décidé de prendre les informations d'identification de l'utilisateur et de hachage / sel le diable en dehors d'eux. Ensuite, stockez ces valeurs dans la DB et dans les cookies utilisateur. J'ai modifié un script que j'ai trouvé sur le site Web PHP et que cela fonctionne bien jusqu'à présent. J'ai cependant remarqué lors de l'utilisation de Array_Rand, qu'il sélectionnerait les caractères à partir de la chaîne prédéfinie, séquentiellement. Je n'ai pas aimé ça, alors j'ai décidé d'utiliser un shuffle sur le tableau Array_Rand'd. Travaillé très bien. P>
Suivant! Je pensais que ce serait intelligent de tourner mon mot de passe entré mon utilisateur en une matrice, puis fusionner cela avec mon tableau salé! Eh bien, j'ai du mal à transformer le mot de passe de mon utilisateur en une matrice. Je veux que chaque personnage de leur mot de passe soit une entrée de matrice. C'est-à-dire que si votre mot de passe était "cool", le tableau serait, matrice 0 => C 1 => O 2 => O 3 => l, etc., etc. J'ai essayé de scinder la chaîne puis l'explosion avec le Caractère de pause spécifiée, cela n'a pas fonctionné. Je crains que je puisse faire quelque chose avec une boucle, une chale et ce que je devais y avoir une manière plus élégante. P>
Toute suggestion? Je suis une sorte de stumped :( Voici ce que j'ai jusqu'ici, je ne suis pas fait avec cela car je n'ai pas progressé plus loin que la partie explosion. P>
$strings = wordwrap($string, 1, "|");
echo $strings . "<br />";
$stringe = explode("|", $strings, 1);
print_r($stringe);
echo "<br />";
echo "This is the exploded password string, for mixing with salt.<hr />";
3 Réponses :
La fonction PHP que vous voulez est STR_SPLIT
[0] => c [1] => o [2] => o [3] => l
Cela fonctionne parfaitement! Merci beaucoup de Colum! Toujours quelque chose à apprendre :) Envoi bien (((Vibes))) Votre chemin!
Les gars n'utilisent pas non plus exploser code> il ne peut pas avoir un délimiteur vide :) Je me sentais juste comme mentionner
Grâce à la dactylographie en vrac de PHP si vous traitez la chaîne comme une matrice, PHP fera hachauffer ce que vous attendez. Par exemple:
Ceci n'est pas lié à la dactylographie en vrac, il est simplement appelé l'accès à la sous-chaîne et est pas b> pour se tromper en tant que tableau.
Hey vulk, merci pour l'information. J'avais exploré que, en réalité, essayant d'obtenir le mot divisé dans un tableau réel pour Array_rand ne fonctionnait tout simplement pas très bien. Sauf si bien sûr array_rand ne peut traiter une chaîne comme une matrice ... je viens de comprendre que ce ne serait pas. Merci pour l'info, peu importe :)
Désolé pour le double, j'aimerais pouvoir éditer, je voulais dire Array_merge. URF
jamais,
Hey merci pour la tête. Je vais finalement utiliser MD5 à hachage le sel / mot de passe mélangé. Le plan est finalement, de créer un sel, de mélanger le mot de passe, MD5 le sel, le MD5, le mot de passe, puis mettez le hachage de chacun ensemble et de hachage de cette chaîne, puis utilisez-le comme des informations d'identification DB / Cookie. J'espère que cela empêchera les attaques de table arc-en-ciel contre l'utilisateur avec des mots de passe et / ou des noms d'utilisateur communs. Il est alors dans mon espoir ultime que je puisse implémenter SSL / TLS pour protéger la transmission des détails du cookie pour empêcher le MITM. Est-ce que ça sonne bien? Merci :)
J'ai entendu dire que MD5 est vraiment recommandé beaucoup en raison de menaces croissantes à l'encontre de celle-ci. J'ai entendu la même chose de Sha1. Souhaitez-vous recommander SHA256? N'est-il pas vrai que si la seule faiblesse inhérente de MD5 est la faible saisie de l'utilisateur? C'est pourquoi je prévois d'utiliser un sel de 30 caractères. Je ne suis pas gourou de quelque manière que ce soit. Toujours entrain d'apprendre!
Vous pourriez très bien avoir raison. Je ne suis pas du tout un expert de cryptographie, je ne peux donc pas parler sur SHA256, mais ce que j'ai lu, c'est que le MD5 n'est pas très «résistant à la collision». Pour trop simplifier, imaginez un algorithme de hachage qui produit un hachage, 0 ou 1. car il n'y a que deux hachages possibles et un nombre infini d'entrées, il y aura de nombreuses collisions. La résistance à la collision fait référence à un nombre égal (ou proche de) de "0 hayes" et "1 hachage" pour toute sorte d'entrée. MD5 n'a pas cette propriété. Ce document décrit cette vulnérabilité.
@Shawn: Pour un article directement à l'étape sur la manière de stocker le mot de passe, voir codahale.com/how-to-safely-store-a-password (puis obtenir une implémentation de BCRYPT pour PHP ici openwall.com/hapass ) Lorsque vous devez aider vos utilisateurs à créer des mots de passe forts, reportez-vous à XKCD xkcd.com/936