用网站安全检测扫瞄博客发现了一个漏洞实际上就是直接访问主题路径的话get_header()函数未生效(Call to undefined function get_header() )而我的WordPress会输出完整的错误信息将敏感名称的目录结构暴露了虽然对正常访问没有影响可是会给某些人可乘之机经常在博客后台看到很多人扫瞄博客各种路径或文件尽可能多的解决漏洞会大大增强网站安全性秀一下我的博客安全性分没有漏洞虽说只是表面的但是我会发现一个解决一个!
下面详细说明下我遇到的问题和解决方案供参考
环境linux vps + lnmp
完整错误信息如下
Fatal error: Call to undefined function get_header() in /网站根路径/izhangheng/wpcontent/themes/twentytwelve/ on line
解决方案
如果WEB应用程序自带错误处理/管理系统请确保功能开启否则按语言环境分别进行处理如果是PHP应用程序/Apache服务器可以通过修改php脚本配置phpini以及中的配置项来禁止显示错误信息
修改phpini中的配置行: display_errors = off
修改中的配置行: php_flag display_errors off
修改php脚本增加代码行: ini_set(‘display_errors’ false);
针对这个问题仅不显示错误信息是不完美的出错后跳转到首页可以避免流量丢失我的环境默认就关闭显示错误信息只需要在有漏洞的页面源码前调用WordPress函数即可首先进入到WordPress后台的外观中比如编辑的是indexphp首页模版将头部代码更改为下面的即可注意所有符号为英文
代码如下
<?php ini_set(display_errors ); ?>
<?php
/**
* @package WordPress
* @codewwwitnet
if (function_exists(get_header)) {
get_header();
}else{
header("Location: http://" $_SERVER[HTTP_HOST] "");
exit;
}; ?>