今天头脑一热到360安全检测那里去为自己的网站进行安全扫描了一番。上次扫描还是一年前,当初扫描一个网站是 94 分,那时候还不懂代码,就这么挂着,被360 公开着。今天的扫描发现了两个漏洞,评分 91 。为了光鲜的 100 ,Jeff决定今个儿决定要解决了这些漏洞。
主题 index.php 文件的页面异常导致本地路径泄漏的漏洞修补
其中一个漏洞是页面异常导致本地路径泄漏,就是打开 http://域名/wp-content/themes/主题/ 这个路径会跳出个错误提示,然后这个提示就会泄露你的服务器路径。
如下面提示文字:
Fatal error: Call to undefined function get_header() in /网站根路径/XXX/wp-content/themes/主题/ on line 1
如图:
解决方法:
WordPress 话一般都是架设在 PHP+Apache 服务器上,可以通过修改php脚本、配置php.ini以及httpd.conf中的配置项来禁止显示错误信息。
1、修改php.ini中的配置行: display_errors = off
2、修改httpd.conf/apache2.conf中的配置行: php_flag display_errors off
3、修改php脚本,增加代码行: ini_set(‘display_errors’, false);
不过的话虚拟主机就没有这个份了,唉,谁叫咱寄人篱下呢?咱有资本了一定买个独立的VPS,哼!
上面不能修改的话,对于WordPress ,可以采用以下代码屏蔽错误信息的显示。在主题目录下的 index.php 文件最开头加入以下代码:
<?php error_reporting(0); ?> |
高级一点可以这样,实现的功能是访问http://域名/wp-content/themes/主题/ 这个路径自动跳转到首页:
<?php ini_set('display_errors', 0); ?> <?php if (function_exists('get_header')) { get_header(); }else{ header("Location: http://" . $_SERVER['HTTP_HOST'] . ""); exit; }; ?> |
7.24更新:衡天主机的蓝冰大哥给我带来了另外一种方法:
在 wp-content/themes 中设置 .htaccess 代码,代码如下:
deny from all <FilesMatch "\.(ico|pdf|jpg|jpeg|png|gif|swf|css|js|zip|rar|txt|woff)$"> Allow from All </FilesMatch> |
表示只允许列表中的文件类型访问,其他的不能访问,如PHP。
其他文件的页面异常导致本地路径泄漏的漏洞修补
如果使用WordPress ,可能会有其他文件也会报为漏洞,比如
/wp-includes/user.php
除了方法如上面一样,通过修改php脚本、配置php.ini以及httpd.conf中的配置项是一劳永逸,也可以在该php文件最开头前加入:
<?php error_reporting(0); ?> |
晒图
解决后Jeff 用360 的重新扫描,呵呵,100 分了,晒一下:
虽然网站安全问题还可能存在,虽然说360 流氓不可信,但老实说人家做得确实不错。
WordPress 安全性就是好,至少比asp 的网站程序强多了。
“主题 index.php 文件的页面异常导致本地路径泄漏的漏洞修补”→“解决方法”第一句:“WordPress 话一般都是架设在 PH+Apache 服务器上”还有个“P”呢
谢谢!你看得太仔细了!
为什么我的网站加了后无效呢?求大师指点迷津