阿帕奇配置。如何禁止查看根文件夹
Posted
技术标签:
【中文标题】阿帕奇配置。如何禁止查看根文件夹【英文标题】:Apache configuration. How to forbid root folders viewing 【发布时间】:2010-12-14 08:21:15 【问题描述】:我添加了虚拟主机 ServerAdmin root@localhost DocumentRoot /var/www/html/blogvet.ru 服务器名称 www.blogvet.ru 服务器别名 blogovet.ru
但是我在这个域中的脚本可以看到所有服务器文件/*不仅在他的目录/var/www/html/blogovet.ru
如何禁止查看除 DocumentRoot 以外的文件?
【问题讨论】:
【参考方案1】:脚本将能够读取运行该脚本的用户可以读取的所有文件。因此,您应该确保您的 Web 服务器不以 root 身份运行(它需要以 root 身份启动以侦听端口 80,但应该将用户切换到例如“www”本身),然后确保该用户无法读取任何合理的文件。
您还可以使用 SElinux 获得额外的安全层。
【讨论】:
您需要以 root 身份启动 apache,但您应该将其配置为在侦听端口 80 后切换到另一个用户。请参阅用户和组 apache 配置指令。【参考方案2】:我找到了这个 php 解决方案(如果禁用 cgi 和 ssi,看起来不错)
<VirtualHost *:80>
ServerAdmin root@localhost
DocumentRoot /var/www/html/site.com
ServerName www.site.com
ServerAlias site.com
ErrorLog /var/www/html/site.com/error-log
# TransferLog /var/www/html/site.com/transfer-log
# CustomLog /var/www/html/site.com/access-log common
<IfModule mod_php5.c>
php_admin_value upload_tmp_dir "/tmp"
php_admin_value include_path ".:/usr/share/pear:/usr/share/php:/var/www/html/site.com"
php_admin_value open_basedir "/var/www/html/site.com"
php_admin_value doc_root "/var/www/html/site.com"
</IfModule>
<Directory "/var/www/html/site.com">
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
【讨论】:
这里,一个php脚本可以仍然访问文件系统中任何可读的文件,但是特定的脚本php_admin会尝试只访问某些文件。 虚假的安全感。正如 Rasmus 指出的那样,您可以只使用 shell_exec() 并且仍然能够做所有事情。除非你也打算放弃所有这些功能。以上是关于阿帕奇配置。如何禁止查看根文件夹的主要内容,如果未能解决你的问题,请参考以下文章