最近 WordPress 安全問題被小編我所關注著,我們如何做才能最大程度上保護我們的 WordPress 程式不被駭客所攻擊?可能很多技術大牛都習以為常了,但是畢竟還是有很多菜鳥不知道的,本帖為一篇 WordPress 安全防護的掃盲貼吧,幫助大家儘可能的提升 WordPress 程式的安全性! !
這裡面小編整理了幾個方面:
wo-login 檔案
WordPress 自身系統來說,最直接的危害就是 wp-login.php 這個後臺路徑已經不在是什麼秘密了,最好的解決方法無非也就是如何把這個後臺路徑給遮蔽或替換一個更隱蔽的地址,這裡小編就說些最簡單,小白也能夠看懂的方法:
一、首先找到 WordPress 根目錄下的 wp-login.php 檔案,用程式碼編寫軟體開啟,編輯裡面程式碼,搜尋 wp_shake_js 找到
- if ( $shake_error_codes && $wp_error->get_error_code() && in_array( $wp_error->get_error_code(), $shake_error_codes ) )
- add_action( 'login_head', 'wp_shake_js', 12 );
在這段?> 的下一行加入程式碼
- <?php
- if($_GET["aa"]!="bb"){
- header('Location: http:
- }
- ?>
其中 aa 、 bb 替換為自己的內容,然後 WordPress 後臺的地址就變成了 http://www.2zzt.com/ wp-login.php?aa=bb 結構了,這就成了您 WordPress 後臺的唯一路徑,其他路徑均跳轉到首頁了!當然這個程式碼也可以放在主題的檔案裡,這樣每次 WordPress 更新就不需要再修改一次了, 在主題檔案下找到 functions.php,將下面程式碼加入即可得到同樣的效果!
- add_action('login_enqueue_scripts','login_protection');
- function login_protection(){
- if($_GET['aa'] != 'bb')header('Location: http:
- }
但是話說回來,我們仔細研究下 WordPress 的登陸檔案會發現,其實 WordPress 的登陸是採用 post 的方式來提交登陸引數的,所以說,即使我們做了後臺地址的隱藏,但是透過 post 提交還是可以登陸到 WordPress 的後臺,那麼這樣我們該如何做呢?
解決方法只有把 WordPress 轉移到子目錄下,操作方式是
a 、 WordPress 後臺-設定-常規下 WordPress 地址 (url) 換成 http://www.2zzt.com/aaa(aaa 為我們自己設定的,是沒有人知道的)
b 、在我們的網站根目錄下建立一個 aaa 資料夾 (aaa 為上面所說的名稱),然後將根目錄下的所有檔案 (除了 index.php 、 robots.txt 以及.htaccess 外) 的所有檔案轉移到這個 aaa 資料夾下, 那麼我們現在的登陸後臺就變成了 http://www.2zzt.com/aaa/wp-login.php,而 aaa 是沒有人知道的地址。。。
WordPress 搬到子目錄後還要將根目錄下 index.php 檔案內容
- require('./wp-blog-header.php');
修改為:
- require('./aaa/wp-blog-header.php');
小編不得不提示下,這裡的 aaa 是你們自己設定的子目錄的名稱,要活學活用哈!
這樣一來,後臺地址隱藏了,且無法透過 post 來提交登陸資訊了。。。這是駭客也無從下手的節奏啊!
後臺帳號 admin
為了更加的安全,建議大家或者說一定不要將 admin 還作為網站管理帳號登陸,這給暴力破解帶來了方便。同時,透過?author=$id 也可以很簡單的爆出我們的管理帳號,例如:222.com/?author=*(*號為 1-9999 數字) 即可輕而易舉的爆出我們的管理帳號,有了帳號再加上市面上的密碼字典,那破解也只是時間問題了,解決方法是在 functions.php 檔案裡新增一下一下程式碼:
- add_filter( 'request', 'v7v3_author_link_request' );
- function v7v3_author_link_request( $query_vars ) {
- if ( array_key_exists( 'author_name', $query_vars ) ) {
- global $wpdb;
- $author_id=$query_vars['author_name'];
- if ( $author_id ) {
- $query_vars['author'] = $author_id;
- unset( $query_vars['author_name'] );
- }
- }
- return $query_vars;
- }
- add_filter( 'author_link', 'v7v3_author_link', 10, 2 );
- function v7v3_author_link( $link, $author_id) {
- global $wp_rewrite;
- $author_id = (int) $author_id;
- $link = $wp_rewrite->get_author_permastruct();
- if ( emptyempty($link) ) {
- $file = home_url( '/' );
- $link = $file . '?author=' . $author_id;
- } else {
- $link = str_replace('%author%', $author_id, $link);
- $link = home_url( user_trailingslashit( $link ) );
- }
- return $link;
- }
這樣重寫後即可改變作者頁面的連結方式了。
wp-admin 目錄
這個問題延伸出一個更為深點的問題,那就是我們如何把 wp-admin 目錄也保護起來呢?小編給的方法雖然有點麻煩,但是絕對很安全,那就是在 wp-admin 目錄下新建個.htaccess 讓只有你一個 IP 能夠訪問,這個方法麻煩就麻煩在如果你的網是動態 IP,那麼就要進.htaccess 修改一次 IP,才可訪問,但是這方法也絕對夠安全了。.htaccess 的內容為:
- order deny, allow
- allow from 888.888.888.8888 #Your IP Address
- deny from all
換為自己的 IP 即可,那麼 wp-admin 目錄只有你一人可以訪問了!說到這,後臺目錄路徑的問題安全了!
WordPress 頭部資訊
隱藏頭部不必要出現的資訊,例如 WordPress 版本號等等,暴力攻擊者掌握了我們的 WordPress 版本號後就可以根據目前已知漏洞進行攻擊了,解決的方法是在我們的主題資料夾的 functions.php 內新增下面資訊,以方便隱藏了 WordPress 不必要出現的資訊,也給網站最佳化方面帶來好處!
- remove_action('wp_head','wp_generator');
- remove_action('wp_head','rsd_link');
- remove_action('wp_head','wlwmanifest_link');
- remove_action('wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 );
- remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0 );
- remove_action('wp_head', 'rel_canonical' );
絕對路徑洩漏修復
WordPress 系統自身來說,有 4 個檔案會暴漏出網站所在伺服器下的絕對路徑,這個資訊如果被惡意利用,那後果也是很嚴重的!為了不被別人發現我們的網站絕對路徑,我們需要對以下四個檔案進行操作,分別是:
- 1 、/wp-includes/registration-functions.php
- 2 、/wp-includes/user.php
- 3 、/wp-admin/admin-functions.php
- 4 、/wp-admin/upgrade-functions.php
解決方法就很簡單了,分別開啟這幾個檔案,然後在檔案的頭部的<?php 下一行新增
即可遮蔽報錯,其實還有一個地方會報錯,那麼就是我們 WordPress 主題的目錄檔案下的 index.php 裡面,最好也加上這個程式碼!!!
當然我們如果用的是伺服器,而不是虛擬主機的話,也最好到伺服器下的 php.ini 檔案裡關閉 php 報錯,一般 php.ini 檔案的路徑在/usr/local/php/etc 下,修改 php.ini 檔案內 display_errors = off 即可遮蔽整個伺服器的 php 報錯!
說到這,我們的 WordPress 應該已經十分的強悍了,至少常見問題都已經解決,山外有山,人外有人這也是沒有辦法的,最後小編建議大家如果是在用伺服器 VPS 的情況下,儘量少開埠,一般開個 80 和 22 埠即可!埠越多,漏洞越多,安全性就受到打折!