аутентификация apache с паролем .htpasswd с использованием соли

Мне интересно, как сервер Apache аутентифицирует меня с помощью .htpasswd

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

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

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

Так какой смысл в этой соли?

Спасибо


person Adrian Georgescu    schedule 27.09.2013    source источник
comment
Это усложняет расшифровку пароля злоумышленникам. Вы должны использовать случайную соль.   -  person Christoph Diegelmann    schedule 27.09.2013
comment
Соль защищает несанкционированный доступ к .htaccess, а не к безопасности HTTP-аутентификации. Проверьте этот stackoverflow.com/ questions/6441578/ для ссылок   -  person regilero    schedule 27.09.2013
comment
Спасибо за ваши ответы!   -  person Adrian Georgescu    schedule 28.09.2013


Ответы (1)


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

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

БОЛЬШАЯ проблема заключается в том, что только первые 8 символов из пароля будут использоваться для создания хэша и только два символа из соли.

Полученный хэш будет состоять из соли + еще 11 символов.

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

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

Более подробное объяснение см. по этой ссылке: http://blog.irreverence.co.uk/? р=858

person Adrian Georgescu    schedule 28.09.2013