В Apache 2.4, При использовании обоих mod_autoindex
и mod_auth_basic
в каталоге, индексация этого каталога вызывает mod_auth_basic
для выполнения хеширования пароля и поиска с нуля для каждого файла / подкаталога в каталоге.
При использовании хеша для хранения строковых паролей, такого как дорогостоящий bcrypy, это может вызвать огромные задержки. Более того, в таком поведении нет необходимости, поскольку все файлы имеют одинаковые настройки аутентификации, и поэтому пользователя и группы нужно подтверждать только один раз. Многократное подтверждение резко и искусственно увеличивает локальную стоимость надежного хеширования паролей без каких-либо преимуществ в плане безопасности, что значительно снижает общую безопасность за счет принудительного использования более дешевых алгоритмов.
У меня вопрос: Как я могу запретить такое поведение?
Как я могу сделать mod_autoindex
сделать только один вызов библиотеки аутентификации паролей?
Вот пример, в котором есть проблема:
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/mycert.crt
SSLCertificateKeyFile /etc/apache2/ssl/mykey.key
<Directory "/webdata/doc">
AuthType basic
AuthName "Safe Documents"
AuthBasicProvider file
AuthUserFile passwd/docuemnts_users.passwd
require valid-user
Options +Indexes
</Directory>
</VirtualHost>
После Apache httpd код обработки запроса, похоже, что это не так. Если я правильно понимаю, аутентификация / авторизация выполняется один раз для основного запроса.
Модуль mod_autoindex будет работать в выходной цепочке для генерации контента, как только он будет авторизован для этого. Единственный авторизационный код в mod_autoindex.c это проверить, разрешено ли генерировать индекс или нет.
Если вы профилировали код с помощью отладочных символов и прочего, опубликуйте свои выводы.