bcrypt с солью как?

Я новичок в вопросах безопасности, я читал php crypt и искать хороший совет, хотя никто не вдается в подробности о том, «как» вы делаете это наиболее эффективным способом.

Я сделал тестовый логин, который использует что-то вроде этого:

 //verify login from user input
$username = mysql_real_escape_string($_POST['username']);
$salt = '$2a$10$cdDegHjJLPUvVXYz23679.MOetNHBk9NTStpY9YjJWiL5ECfhHlSm';
$password = crypt(mysql_real_escape_string($_POST['password']), $salt);

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

Я где-то читал, что идеально делать случайную соль и хранить ее вместе с паролем (я не совсем понимаю эту концепцию проверки числа, которое не относится к паролю)

Затем я где-то прочитал, что делать случайную соль бессмысленно, потому что это не повысит безопасность, и что статическая соль сделает то же самое.

Я видел этот учебник с использованием случайной соли с $_GET. (Скажи мне, что это неправильно)

Может ли кто-нибудь указать мне правильное направление, чтобы сделать мой bcrypt максимально эффективным.

Спасибо


person frontsideup    schedule 09.04.2012    source источник
comment
Скажи мне, что это не так - какая часть?   -  person Oliver Charlesworth    schedule 09.04.2012
comment
Пожалуйста, не используйте везде слепо mysql_real_escape_string. Его следует использовать только для экранирования строк для запросов (и его в любом случае следует избегать, вы безопаснее при использовании подготовленных операторов, и их легче правильно понять для начинающих). И да, вы должны использовать случайную соль для каждого пользователя.   -  person knittl    schedule 10.04.2012


Ответы (2)


См. мой старый ответ в этой теме здесь. Есть одна интересная статья и ссылка на phpass.

person Eddy Freddy    schedule 09.04.2012
comment
Спасибо, уже встречал. Выглядит хорошо, хотя я хочу испачкать руки, чтобы знать, как это сделать без посторонней помощи. - person frontsideup; 09.04.2012
comment
Эдди, куда бы я ни пошел, я всегда оказываюсь на openwall.com/phpass. (Я ошибаюсь насчет грязных рук), я должен узнать о безопасности, хотя я не должен использовать свою собственную реализацию, я должен использовать чужую проверенную и проверенную систему для серьезных проектов, поскольку я никогда не стану экспертом за одну ночь. - person frontsideup; 09.04.2012
comment
@Julien Etienne - Нет, ты прав, ты должен испачкать руки, и как только они достаточно испачкаются, ты сможешь использовать библиотеку. Достаточно часто я заканчивал тем, что писал примеры, я ожидал найти кучу статей в инете, - я их не нашел, потому что никто не хочет пачкать руки. - person martinstoeckli; 10.04.2012

Важно использовать случайную соль для каждого пароля важно. PHP-реализация функции crypt() автоматически включит ее в результирующее значение хеш-функции, поэтому нет проблем, где ее хранить, но она должна правильно генерироваться из случайного источника.

Я написал небольшую статью о bcrypt в PHP, так как считаю важным, чтобы она понимает, как работает функция. Как только мы это поймем, мы сможем использовать хорошо зарекомендовавшую себя библиотеку, такую ​​как phpass.

person martinstoeckli    schedule 09.04.2012