Я пытаюсь правильно настроить соль для каждого пользователя и сайта для своих паролей. Вот что у меня есть:
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);
Это правильно? Спасибо
mysql_real_escape_string
. Результирующееhash()
изменит любой недопустимый SQL на букву/цифру. (2) Убедитесь, что вы храните свой$per_user_salt
безопасным и надежным способом, чтобы получить его, когда ваши пользователи пытаются войти в систему со своим паролем. - person Charles Sprayberry   schedule 25.06.2011INSERT INTO users (per_user_salt) VALUES ($per_user_salt)
? - person Andrew Samuelsen   schedule 25.06.2011$per_user_salt
в кавычки (одинарные или двойные), так как ваш хэш представляет собой строку (например,INSERT INTO users (per_user_salt) VALUES ('$per_user_salt')
. - person Francois Deschenes   schedule 25.06.2011mysql_real_escape_string()
прямо перед запросом к базе данных, а не в начале? - person maaudet   schedule 25.06.2011salt . pw . per_user_salt
, а затем хеширование ... если у вас есть лучшая рекомендация, пожалуйста дайте мне знать... я никогда не делал этого раньше.. - person Andrew Samuelsen   schedule 25.06.2011hash("sha512", $pw . md5($pw) . $site_salt);
, что примерно так же безопасно, как случайно сгенерированное число (пока вы никому не говорите свой алгоритм). Большим преимуществом является то, что взлом вашей базы данных (например, с помощью инъекции) не приведет к отображениюper_user_salt
, так как это неstored
. - person KilZone   schedule 25.06.2011$combine
на$combine = $pw . $per_user_salt . $site_salt . $site_salt . $per_user_salt . $pw;
, это было бы более безопасно ...? или есть более простой способ сделать его более безопасным, например$combine = $pw . $per_user_salt . $site_salt . md5($pw);
... - person Andrew Samuelsen   schedule 25.06.2011$combine
становится более сложным, но мне больше нравится ваш последний вариант. Однако в конечном итоге все сводится к личным предпочтениям. Просто помните, что вашsalt
-трюк — это форма безопасности через неизвестность, и чем меньше людей знают о том, как вы делаете$combine
, тем лучше. Попробуйте придумать что-нибудь необычное, вроде тех двух, которые вы только что опубликовали, и все будет в порядке. - person KilZone   schedule 25.06.2011