如何正确地拒绝使用 Apache 2.4 对特定文件的访问?

如何正确地拒绝使用 Apache 2.4 对特定文件的访问?

我在 Windows 10 上运行 Apache 2.4。为了拒绝访问特定目录中的 DLL 文件,我尝试

<Directory "${SRVROOT}/htdocs">
#...
    <Files "*.dll">
        Require all denied
    </Files>
#...
</Directory>

如果没有这个,并且给定一个不存在的文件,例如,foo.dll它会给出 404。有了配置,同样的不存在的文件foo.dll会给出 403,所以我知道配置是有效的;但是,当我尝试访问bar.dll给定目录中存在的文件时,系统会要求我下载它。这是为什么?

我如何知道什么可能会覆盖我的<Files ...>指令?

答案1

好的,为了实现我的目标,我撤销了一般情况下的所有访问权限,并明确允许单个文件,就像这样。

<Directory "${SRVROOT}/htdocs">
    #...
    Require all denied

    <Files "*.exe">
        Options +ExecCGI
        SetHandler fcgid-script
        Require all granted
    </Files>

</Directory>

这可以有效防止加载 .dll 文件以及目录中所有其他无关的内容。

相关内容