Попытка хэшировать мои пароли, но безуспешно - PullRequest
1 голос
/ 22 апреля 2011

Я довольно новичок в безопасности php, и для моего сайта я зарегистрировался и вошел в систему, и я хочу добавить md5 свои пароли, но я не могу найти нигде, где есть четкое руководство по тому, что должно быть добавлено в регистрацию, и что нужно добавить в файлы логина и / или базу данных, поскольку я говорю, что я довольно новичок в php с точки зрения веб-безопасности, поэтому мне нужна некоторая помощь, вот часть что у меня есть в моей регистрационной форме:

    $error = $user = $pass = "";
if (isset($_SESSION['user'])) destroySession();

if (isset($_POST['user']))
{
    $user = sanitizeString($_POST['user']);
    $pass = sanitizeString($_POST['pass']);


    if ($user == "" || $pass == "")
    {
        $error = "Not all fields were entered<br /><br />";
    }
    else
    {
        $query = "SELECT * FROM members WHERE user='$user'";

        if (mysql_num_rows(queryMysql($query)))
        {
            $error = "Username already taken<br /><br />";
        }
        else
        {
            $query = "INSERT INTO members VALUES('$user', '$pass')";
            queryMysql($query);
            die("<h4>Account created</h4>Please Log in.");
        }

    }
}

Мне просто нужен пример или хорошее руководство о том, что мне нужно сделать, чтобы заставить его работать правильно.

Ответы [ 2 ]

4 голосов
/ 22 апреля 2011

Я думаю, что вы ищете соль, а затем хешируете свои пароли. Просто добавьте строку по вашему выбору в начало (и, если хотите, в конец) вашего пароля, прежде чем хешировать его с помощью MD5.

, например

$pass = 'mypassword';
$salt = 'S%gh3578';  //anything you want
$pepper = 'w890rrk'; //anything you want
$query = "INSERT INTO members VALUES('$user', md5('".$salt.$pass.$pepper."'))";
queryMysql($query);

При этом пароль будет храниться в базе данных с использованием соленого шифрования MD5, который нельзя отменить с помощью таблицы поиска общих паролей с использованием несоленного шифрования MD5.

Чтобы проверить, действителен ли пароль, выполните что-то похожее:

$passToCheck = 'something';
$correctMD5 = (retrieve hash from db)
if($salt.$passToCheck.$pepper == $correctMD5)
{    
   //valid login
} else {
   //login failure
}
0 голосов
/ 22 апреля 2011

Вы можете, например, md5 ($ pass) перед вставкой, и когда пользователь входит в систему, вы снова вводите md5 и проверяете, что значения совпадают. Нет никакого способа de-md5, поэтому вы обычно проверяете вход md5 по значению md5 DB.

...