2013-09-27 4 views
0

Я задаюсь вопросом, как сервер Apache проверяет подлинность меня .htpasswdапач аутентификации с .htpasswd пароль с помощью соли

У меня есть .htpasswd файл внутри папки. .htpasswd содержания генерируются с PHP и пароль шифруются с crypt() функции, как это:

crypt($password,mb_substr($password,0,2)); 

Проблема заключается в том, что независимо от того, какая соли я использую: mb_substr($password,0,2) или my_private_salt или «независимо» сервер всегда будет аутентифицировать меня если я передаю правильную комбинацию имени пользователя и пароля.

Итак, в чем смысл этой соли?

Thanks

+3

Это делает его более трудным для плохих парней, чтобы расшифровать пароль. Вы должны использовать случайную соль. – Christoph

+0

Соль обеспечивает несанкционированный доступ к '.htaccess', а не к безопасности HTTP Auth. Проверьте это http://stackoverflow.com/questions/6441578/how-secure-is-htaccess-password-protection/6442113#6442113 для справки – regilero

+0

Благодарим вас за ответы! –

ответ

0

Я нашел ответ.

Функция php crypt() генерирует уникальный хэш. Если соль не указана, генерируется случайная соль.

A BIG Проблема заключается в том, что для генерации хэша будут использоваться только первые 8 символов из пароля и только два символа из соли.

В результате хэш будет состоять из соли + еще 11 символов.

Например: , если мы это сделаем: crypt ('1234567', '12') Результат будет «120QBxD1IX.Cw». Обратите внимание на первые два символа из хэша (12)

Так сервер Apache будет знать, как зашифровать запрос и сравнить его с сохраненным хэшем в файле .htpasswd.

Для лучшего объяснения смотрите по этой ссылке: http://blog.irreverence.co.uk/?p=858

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

  • Нет связанных вопросов^_^