使用WordPress的博主都有一個普遍的意識,就是為了安全而移除WordPress的版本號,以免不良用心的人利用舊版本的漏洞對網(wǎng)站進行攻擊。
創(chuàng)新互聯(lián)公司專業(yè)提供成都服務器托管服務,為用戶提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶可自行在線購買成都服務器托管服務,并享受7*24小時金牌售后服務。
WordPress會在前端代碼head中加入以下代碼(3.8是當前網(wǎng)站所使用的WordPress版本號):
meta name="generator" content="WordPress 3.8" /
有很多方法可以移除WordPress添加的版本號信息,我們先看看幾種常見的方式:
方法一(錯誤):修改WordPress源代碼
修改wp-includes/defaults-filter.php,將其中的:
1
add_action('wp_head', 'wp_generator');
改成:
1
remove_action('wp_head', 'wp_generator');
相信現(xiàn)在已經(jīng)沒人還傻到去修改WordPress源文件來實現(xiàn)某種功能了吧?下次WordPress更新又得重新修改,實在是累!
方法二(錯誤):直接刪除wp_head()
因為本文開頭那段泄漏WordPress版本號的代碼,一般是主題文件header.php中的wp_head()函數(shù)輸出的,并且這個函數(shù)會輸出一些無用的代碼,所以有些人干脆來個痛快,直接把wp_head()函數(shù)刪掉了事。只是他們沒有想過,很多插件/主題會通過這個函數(shù)進行一些操作,刪掉這個函數(shù)將使這些插件/主題無法工作。興許,下次安裝個插件,死活用不了還找不到原因呢!
方法三:remove_action
一個好的方法,也是絕大多數(shù)教程提供的方法,是在當前主題的functions.php中添加以下代碼:
1
remove_action('wp_head', 'wp_generator');
這樣就可以從網(wǎng)站的head中移除本文開頭提到的那段含有版本號的代碼。但是,這里我要打擊一下各位,最近在露兜博客留言的使用WordPress的站長,幾乎沒有一個站點能夠完全隱藏掉WordPress版本號。打開你們的feed源,如,有沒有看到這個:
1
generator;/generator
啊??!3.8不就是WordPress的版本號嗎?再隨便看看你的一篇文章的網(wǎng)頁源代碼,是否會看到下面的幾段類似代碼呢:
1
2
3
script type='text/javascript' src='/wp-includes/js/comment-reply.min.js?ver=3.8'/script
link rel='stylesheet' href='/wp-includes/css/admin-bar.css?ver=3.8' type='text/css' /
link rel='stylesheet' href='//fonts.googleapis.com/css?family=Handleever=3.8' type='text/css' /
呵呵,又見3.8,其實WordPress不僅會輸出本文開頭的那段代碼,而且會在feed中輸出版本號,另外,為了更新緩存,某些css和js結(jié)尾也會附上WordPress版本號(如以上第2-3行代碼)。
方法四:正確方法
所以,我們還應該移除feed和js/css中的WordPress版本號,在當前主題的functions.php中添加以下代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 同時刪除head和feed中的WP版本號
function ludou_remove_wp_version() {
return '';
}
add_filter('the_generator', 'ludou_remove_wp_version');
// 隱藏js/css附加的WP版本號
function ludou_remove_wp_version_strings( $src ) {
global $wp_version;
parse_str(parse_url($src, PHP_URL_QUERY), $query);
if ( !empty($query['ver']) $query['ver'] === $wp_version ) {
// 用WP版本號 + 12.8來替代js/css附加的版本號
// 既隱藏了WordPress版本號,也不會影響緩存
// 建議把下面的 12.8 替換成其他數(shù)字,以免被別人猜出
$src = str_replace($wp_version, $wp_version + 12.8, $src);
}
return $src;
}
add_filter( 'script_loader_src', 'ludou_remove_wp_version_strings' );
add_filter( 'style_loader_src', 'ludou_remove_wp_version_strings' );
另外,在WordPress后臺右下角也會顯示W(wǎng)ordPress版本號,leiming網(wǎng)友提供了:去除此版本號的代碼。不過個人覺得,如果開放了后臺,從后臺的界面風格也很好判斷WordPress的版本,畢竟從我使用WordPress至今,WordPress已經(jīng)換過4次界面了。
blueionic反饋,WordPress安裝目錄下的readme.html也會泄漏版本,每次更新后記得刪除。
直接把目錄全部刪除就可以了,登錄你的空間后臺,應該有刪除目錄之類的選項,用ftp刪除太慢了,建議你直接登錄后臺刪除,然后把數(shù)據(jù)庫清空,前提是你這些都是不需要的
wordpress直接上傳到web目錄就可以了。然后瀏覽器里安裝就可以了。
/wp-json/并不是每個網(wǎng)站都需要的,或者說需要,但是并不希望他在head里面輸出。會影響wordpress的打開速度。如何移除head里面wp-json鏈接呢?網(wǎng)上找到了一個方法。即在主題functions.php文件中添加以下代碼。
//移除wp-json
remove_action(?'template_redirect',?'rest_output_link_header',?11,?0?);
remove_action(?'wp_head','rest_output_link_wp_head'?);
remove_action(?'wp_head',?'wp_oembed_add_discovery_links'?);