正確去除隱藏在WordPress系統各處的版本號


使用WordPress的博主都有一個普遍的意識,就是為了安全而移除WordPress的版本號,以免不良用心的人利用舊版本的漏洞對網站進行攻擊。

WordPress會在前端代碼head中加入以下代碼(3.8是當前網站所使用的WordPress版本號):

<meta name="generator" content="WordPress 3.8" />

有很多方法可以移除WordPress添加的版本號信息,我們先看看幾種常見的方式:

方法一(錯誤):修改WordPress源代碼

修改wp-includes/defaults-filter.php,將其中的:

add_action('wp_head', 'wp_generator');

改成:

remove_action('wp_head', 'wp_generator');

相信現在已經沒人還傻到去修改WordPress源文件來實現某種功能了吧?下次WordPress更新又得重新修改,實在是累!

方法二(錯誤):直接刪除wp_head()

因為本文開頭那段泄漏WordPress版本號的代碼,一般是主題文件header.php中的wp_head()函數輸出的,並且這個函數會輸出一些無用的代碼,所以有些人干脆來個痛快,直接把wp_head()函數刪掉了事。只是他們沒有想過,很多插件/主題會通過這個函數進行一些操作,刪掉這個函數將使這些插件/主題無法工作。興許,下次安裝個插件,死活用不了還找不到原因呢!

方法三:remove_action

一個好的方法,也是絕大多數教程提供的方法,是在當前主題的functions.php中添加以下代碼:

remove_action('wp_head', 'wp_generator');

這樣就可以從網站的head中移除本文開頭提到的那段含有版本號的代碼。但是,這里我要打擊一下各位,在我看見的WordPress的站長,幾乎沒有一個站點能夠完全隱藏掉WordPress版本號。打開你們的feed源,如http://example.com/feed,有沒有看到這個:

<generator>http://wordpress.org/?v=3.8</generator>

啊啊!3.8不就是WordPress的版本號嗎?再隨便看看你的一篇文章的網頁源代碼,是否會看到下面的幾段類似代碼呢:

<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=Handlee&ver=3.8' type='text/css' />

呵呵,又見3.8,其實WordPress不僅會輸出本文開頭的那段代碼,而且會在feed中輸出版本號,另外,為了更新緩存,某些css和js結尾也會附上WordPress版本號(如以上第2-3行代碼)。

方法四:正確方法

所以,我們還應該移除feed和js/css中的WordPress版本號,在當前主題的functions.php中添加以下代碼:

// 同時刪除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 替換成其他數字,以免被別人猜出 $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后台右下角WordPress版本號:

在fuction.php中加入以下代碼可消除:

add_filter('admin_footer_text', 'left_admin_footer_text'); function left_admin_footer_text($text) { // 左邊信息改成自己的站點 $text = '感謝訪問XXXX'; return $text; } add_filter('update_footer', 'right_admin_footer_text', 11); function right_admin_footer_text($text) { // 隱藏右邊版本信息 }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM