今天在调整网站架构时,突然发现可以直接浏览到子目录下的结构和文件。我觉得这是一个比较危险的情况,特别是Apache配置中是打开该选项的,有必要关闭它。 一、默认情况 默认情况下,Apache的配置文件/etc/httpd/conf/httpd.conf中有如下参数: 引用 <Directory "/var/www/html"> Options Indexes FollowSymLinks ...... </Directory> 也就是说,在目录下没有默认首页面(如:index.html index.php等)时,可以让用户直接浏览web目录架构,这可能会导致一些重要的目录或配置文件被公开。 通常在Web应用上也会做一些安全考虑,以Bo-Blog为例,一些目录下会有类似的文件: 引用 # cat inc/index.php <?php die ('Access Denied'); 这样,可以避免用户直接浏览该目录时,看到整个目录结构。但如果访问它下面的子目录就没什么作用了: ![]() 所以,这还是不太安全。 二、修改配置文件 安全起见,我建议还是把Indexes选项关闭比较好,方法有两种: 1、全局关闭 修改上面提到的配置文件/etc/httpd/conf/httpd.conf,把: 引用 Options Indexes FollowSymLinks 改为: 引用 Options -Indexes FollowSymLinks 重启httpd服务即可,这样可以把所有网站的Indexes选项都取消。 2、修改.htaccess文件 如需要针对特定的网站取消该功能,可以先打开.htaccess支持,修改/etc/httpd/conf/httpd.conf: 引用 <Directory "/var/www/html"> ...... AllowOverride None ...... </Directory> 修改为: 引用 <Directory "/var/www/html"> ...... AllowOverride All ...... </Directory> 然后,在各网站的主目录下写入一个.htaccess文件,内容有: 引用 # head .htaccess Options -Indexes <IfModule mod_rewrite.c> RewriteEngine on RewriteBase / ...... 保存后马上生效。 这时,访问同样的路径,就会报下面的错误提示: ![]() ※ 从服务层面去屏蔽类似的问题,会比从应用层面解决要更安全和可靠。很多应用程序的默认设置都是比较宽松的,所以,在对外公布网站的时候,务必做好类似的安全检查,防止漏洞和隐患。 |
|
来自: NaturalWill > 《待分类1》