2012-04-09 4 views
1

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

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

//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); 

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

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

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

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

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

Благодаря

+0

«Скажите мне, что это неправильно» - какая часть? –

+1

Пожалуйста, не слепо используйте 'mysql_real_escape_string' везде. Его следует использовать только для исключения строк для запросов (и его следует избегать в любом случае, вы более безопасны при использовании подготовленных инструкций, и им легче получить право для начинающих). И да, вы должны использовать случайную соль для каждого пользователя. – knittl

ответ

1

Смотрите мой старый ответ на эту тему по here. Существует одна интересная статья и ссылка на phpass.

+0

Спасибо, я раньше наткнулся на это. Это выглядит хорошо, хотя я хочу, чтобы мои руки были грязными, поэтому я знаю, как это сделать без помощи. – Undefined

+0

Эдди везде, куда я иду, я все время возвращаюсь в http://www.openwall.com/phpass/. (Я ошибаюсь в отношении грязных вещей), я должен узнать о безопасности, хотя я не должен использовать свою собственную реализацию. Я должен использовать кого-то проверенную и проверенную систему для серьезных проектов, так как я никогда не стану экспертом в одночасье. – Undefined

+1

@Julien Etienne - Нет, если вы правы, вы не будете грязными руками, и как только они будут достаточно грязными, вы можете использовать библиотеку. Достаточно часто я заканчивал писать примеры, я ожидал найти массу статей в Интернете, - я их не нашел, потому что никто не хочет получать грязные руки. – martinstoeckli

1

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

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

Смежные вопросы