WordPress 安全性設定(二) 系統底層設定

最後更新 2021-08-04 作者 Roy

一般我們租用的虛擬主機作業系統都是基於Linux開源的系統,雖然WordPress會幫我們處理好很多基本設定,但是建議再檢查一次並確實設定防止被存取或改寫檔案。

修改目錄和檔案權限

WordPress官方建議:目錄一律設為755,檔案一律設為644。
登入Linux機器後,執行以下兩條指令來將你 WordPress 內的檔案和目錄設定為正確的權限。

如果你是使用cpanel操作介面等介面的虛擬主機 ,不一定有提供ssh的登入方式,所以可以透過以下的方式進行修改

find /your/wordpress/folder/ -type d -exec chmod 755 
find /your/wordpress/folder/ -type f -exec chmod 644

在FTP裡則是右鍵 -> 檔案權限 -> 數值 ,將數值調成正確權限。
對目錄來說,755(rwxr-xr-x) 意味著只有擁有者具備寫入權限,其他人只有讀取和執行的權限。對檔案來說,644 (rw-r–r–) 意味著只有檔案擁有者具備讀取和寫入權限,其他人為唯讀。

使用.htaccess 防止使用者查看你的目錄結構

保護 .htaccess

.htaccess是針對 apache和litespeed的網頁伺服器(Web server)適用,如不清楚主機配置請詢問您的主機廠商。
第一步驟請先檢查WordPress的跟目錄底下是否有 .htaccess 檔案,如果沒有請自行新建。
接著將以下程式碼則一貼入 .htaccess 檔案內

第一個寫法Options All在某些虛擬主機中是不允許被覆寫的,說是基於安全理由。如果你要用這種寫法,可能需要測試一下你的虛擬主機商是否允許。

# disable directory browsing
Options All -Indexes

第二個寫法則沒有問題。
或是直接使用第三種寫法,語法是禁止所有人直接瀏覽該檔案,但是系統使用讀取是允許的。

# disable directory browsing
Options -Indexes
<Files .htaccess>
order allow,deny
deny from all
</Files>

保護wp-Config.php

將以下程式碼放在網站根目錄下的 .htaccess檔案中。這語法意思是:禁止所有人瀏覽(主機內的程式可以正常讀取)

<files wp-config.php>
order allow,deny
deny from all
</files>

保護wp-content目錄

將以下程式碼放在網站根目錄下的 .htaccess檔案中。這語法意思是 只允許XML、CSS、JPG、JPEG、PNG、GIF 和 JavaScript 被上傳到媒體資料夾,其餘的檔案類型將被拒絕。如此,駭客就無法將郵件程式上傳到你的網站,利用你的伺服器來發送垃圾郵件。

注意:如果安裝「Featured Post with thumbnail」、「Yet Another Related Posts Plugin」外掛又做這項修改,前者圖片會無法讀取,後者樣式會跑掉。
另外兩種作法是搬移wp-content目錄或重新命名wp-content目錄,但外掛開發者有可能把wp-content目錄的路徑寫死,搬移或重新命名會造成外掛無法使用,所以建議不要使用。

Order deny,allow
Deny from all
<Files ~ ".(xml|css|jpe?g|png|gif|js)$">
Allow from all
</Files>

保護wp-includes目錄

將以下程式碼放在網站根目錄下的 .htaccess檔案中。

# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>  

本系列文章會分成以下章節,持續更新

Roy
關於作者 Roy

曾經北漂的工程師,現在專注於WordPress、.Net Core開發


發佈留言