我在 CentOS 7 上运行 Apache。我配置了多个虚拟主机。它们的根目录位于/var/www/html/{example.com, sub1.example.com, etc.}
。我还配置了一个000-default.conf
vhost 来将所有传入流量(未被其中一个虚拟主机覆盖)重定向到主文档根目录 ( /var/www/html
) 并显示空白页。
但我现在面临一个严重的安全问题:如果访问者被重定向到包含空白 index.html 文件的文档根目录,他可以在 URL 后附加“/example.com”并访问此目录。这似乎并不危险,但想象一下,如果例如 Laravel 应用程序安装在那里,它有一个公共文件夹 ( /var/www/html/example.com/public
)。那么访问者将能够浏览 laravel 目录及其所有配置文件!
我该如何预防?
答案1
您可以使用以下 apache 指令来阻止目录列表:
Options -Indexes
您可以在 httpd.conf 中全局设置此项,对于特定目录,使用<Directory </Directory>
下面的块或使用.htaccess
目录内的文件进行设置。
<Directory /var/www/html/example.com/public>
Options -Indexes
</Directory>
进一步参考:目录列表配置