web-dev-qa-db-ja.com

Apache 2.4で特定のファイルへのアクセスを適切に拒否するにはどうすればよいですか?

私はWindows10でApache2.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ファイルやその他すべての無関係なファイルの読み込みが適切に防止されます。

2