用網站安全檢測掃瞄博客,發現了一個漏洞,實際上就是直接訪問主題路徑的話,get_header()函數未生效(Call to undefined function get_header() ),而我的WordPress會輸出完整的錯誤信息,將敏感名稱的目錄結構暴露了,雖然對正常訪問沒有影響,可是會給某些人可乘之機。經常在博客後台看到很多人掃瞄博客各種路徑或文件,盡可能多的解決漏洞,會大大增強網站安全性。秀一下我的博客安全性,100分,沒有漏洞;雖說只是表面的,但是我會發現一個解決一個!
下面詳細說明下我遇到的問題和解決方案,供參考。
環境:linux vps + lnmp
完整錯誤信息如下:
Fatal error: Call to undefined function get_header() in /網站根路徑/izhangheng/wp-content/themes/twentytwelve/ on line 10
解決方案:
如果WEB應用程序自帶錯誤處理/管理系統,請確保功能開啟;否則按語言、環境,分別進行處理。如果是PHP應用程序/Apache服務器,可以通過修改php腳本、配置php.ini以及httpd.conf中的配置項來禁止顯示錯誤信息。
1.1、修改php.ini中的配置行: display_errors = off
2.2、修改httpd.conf/apache2.conf中的配置行: php_flag display_errors off
3.3、修改php腳本,增加代碼行: ini_set(‘display_errors’, false);
針對這個問題,僅不顯示錯誤信息是不完美的,出錯後跳轉到首頁,可以避免流量丟失。我的環境默認就關閉顯示錯誤信息,只需要在有漏洞的頁面源碼前調用WordPress函數即可。首先進入到WordPress後台的外觀中,比如編輯的是index.php首頁模版,將頭部代碼更改為下面的即可,注意所有符號為英文。
代碼如下<?php ini_set('display_errors', 0); ?>
<?php
/**
* @package WordPress
* @code www.45it.net
if (function_exists('get_header')) {
get_header();
}else{
header("Location: http://" . $_SERVER['HTTP_HOST'] . "");
exit;
}; ?>