在使用百度云观测的时候,弹出了网站的安全警告:页面异常导致本地路径泄漏,还给出了漏洞页面的地址:http://*.com/wp-content/themes/uptown/,指向了本博客使用的主题目录首页文件index.php。点开这个链接,显示了一个错误信息,其中包含了博客所在主机的本地磁盘路径。
1
2
|
Fatal error: Call to undefined function get_header() in /home/public_html/blog/wp-content/themes/uptown/index.php on line 4 |
这明显是一个调试信息,指明了访问该文件发生了错误,并且贴出来主机的本地路径。我接着试验了wordpress主题目录和include目录下的其他文件,出现了相同的本地路径泄露情况。
一般的,当通过浏览器访问如下文件时,文件没有对访问权限进行验证,会引发Call to undefined function调用未定义函数错误,当未禁用错误报告或错误显示时会导致网站绝对路径泄露。
1
2
3
4
5
6
7
8
9
10
11
12
|
wp-admin/admin-functions.php wp-admin/upgrade-functions.php wp-includes/ class -snoopy.php wp-includes/registration.php wp-includes/rss-functions.php wp-includes/rss.php wp-includes/theme-compat/comments-popup.php wp-includes/theme-compat/comments.php wp-includes/theme-compat/footer.php wp-includes/theme-compat/header.php wp-includes/theme-compat/sidebar.php wp-includes/registration-functions.php |
对于这样的问题,只要禁止显示调试错误就可以了。对于PHP+Apache的wordpress网站,有以下三种修补方式:
- 修改php.ini中的配置行: display_errors = off
- 修改httpd.conf/apache2.conf中的配置行: php_flag display_errors off
- 修改php脚本,增加代码行: ini_set(‘display_errors’, false);
每一种方法都可以解决Wordpress页面异常导致本地路径泄漏的问题。