PHP соль мои пароли на пользователя Sha512 - я делаю это правильно? - PullRequest
9 голосов
/ 25 июня 2011

Я пытаюсь правильно использовать пароль для каждого пользователя и сайта.Вот что у меня есть:

require('../../salt.php'); //this is above the web root and provides $salt variable
$pw = mysql_real_escape_string($_POST['pw']);
$per_user_salt = uniqid(mt_rand());
$site_salt = $salt //from salt.php that was required on first line
$combine = $pw . $per_user_salt . $site_salt;
$pw_to_put_in_db = hash("sha512", $combine);

Это правильно?Спасибо

Ответы [ 4 ]

0 голосов
/ 13 июня 2013

Используйте crypt, он доступен на всех языках, и ваши хэши паролей будут использоваться и другими программами:

$hash = crypt("secret", "$6$randomsalt$");
0 голосов
/ 01 июля 2011

Основываясь на комментариях, я собираюсь сделать следующее: изменить $combine на что-то уникальное для каждого пользователя, но не сохраненное в БД.Итак, что-то вроде: $combine = $pw . md5($pw) . 'PoniesAreMagical' . $site_salt . md5($pw);, и т. Д. И т. Д. ... Спасибо за помощь ...

Итак - для тех, кто пытается выяснить, как это сделать впервые (как я).... все дело в алгоритме ... сделать что-то непонятное, уникальное, сложное для понимания;потому что если кто-то захочет войти в вашу систему, ему придется это выяснить.Спасибо всем за потрясающие комментарии.

0 голосов
/ 08 июня 2013

Это нормально, только что удалили "" из "sha512" :)

$pw = $_POST['pw'];
$per_user_salt = uniqid(mt_rand());
$site_salt = $salt //from salt.php that was required on first line
$combine = $pw . $per_user_salt . $site_salt;
$pw_to_put_in_db = hash(sha512, $combine);

не нужно использовать md5 sha512 достаточно безопасно само по себе

0 голосов
/ 25 июня 2011

часто люди используют уникальную соль, соединенную паролем, а затем используют метод hmac для добавления ключа хеширования:

http://www.php.net/manual/en/function.hash-hmac.php

$password = hash_hmac('sha512', $password . $salt, $sitewide_key);
...