在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>
答案1
关注 Apache httpd请求处理代码,似乎不是这样。如果我没看错的话,身份验证/授权只针对主请求进行一次。
一旦获得授权,mod_autoindex 模块将在输出链中工作以生成内容。mod_autoindex.c是检查是否允许生成索引。
如果您已经使用调试符号和所有内容对代码进行了分析,请发布您的发现。