Назад | Перейти на главную страницу

Как запретить повторные проверки mod_auth_basic с помощью mod_autoindex?

В 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 это проверить, разрешено ли генерировать индекс или нет.

Если вы профилировали код с помощью отладочных символов и прочего, опубликуйте свои выводы.