如果您想提高安全性并減少 WordPress網(wǎng)站上的漏洞,那么擁有一個配置良好的.htaccess文件至關(guān)重要。通常,創(chuàng)建自定義.htaccess文件的主要目的是防止您的網(wǎng)站被黑客入侵,但它也是處理重定向和管理緩存相關(guān)任務(wù)的絕佳方式。
.htaccess是Apache Web服務(wù)器上使用的配置文件 。大多數(shù)WordPress站點都在Apache服務(wù)器上運行 ,盡管其中一小部分由Nginx提供支持 。在本文中,您可以找到.htaccess代碼片段的集合,其中大部分可用于保護您的網(wǎng)站,而其余代碼片段實現(xiàn)其他有用的功能。
不要忘記在編輯之前備份.htaccess 文件,以便在出現(xiàn)問題時始終可以返回到以前的版本。
如果你是一個不喜歡觸摸配置文件的人,我推薦你使用BulletProof Security 插件,它是市場上最可靠(也可能是最老的)免費.htaccess安全插件 。
創(chuàng)建 WP 默認的 .htaccess .htaccess基于每個目錄工作 ,這意味著每個目錄都可以擁有自己的.htaccess文件。很可能你的WordPress網(wǎng)站還沒有.htaccess文件。如果在根目錄中找不到.htaccess文件,請創(chuàng)建一個空文本文件并將其命名為.htaccess。
下面,您可以找到WordPress使用的默認.htaccess 。無論何時需要此代碼,您都可以在WordPress Codex中 快速查找。請注意,WP Multisite (多站點)有一個不同的.htaccess 。
# BEGIN WordPress
<IfModule mod_rewrite.c >
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule >
# END WordPress以# 開頭的行是注釋。不要編輯任何 # BEGIN WordPress和# END WordPress之間的代碼。在這些默認規(guī)則下 添加自定義.htaccess 規(guī)則 。
有用的.htaccess代碼 你可以在本文中找到的所有代碼段,然后添加到根目錄的核心.htaccess文件 。
1.拒絕訪問所有.htaccess文件 下面的代碼拒絕訪問 你WordPress中的所有.htaccess文件。這樣,您可以阻止別人查看你的Web服務(wù)器配置 。
# Denies access to all .htaccess files
<Files ~ "^. *\. ([Hh ][Tt ][Aa ])">
Order Allow,Deny
Deny from all
Satisfy all
</Files > 2.保護你的WP配置文件 wp-config.php文件包含所有WP配置 ,包括數(shù)據(jù)庫登錄名和密碼。您可以拒絕所有人或允許管理員訪問它 。
如果你選擇后者,去除 # Allow from xx.xx.xx.xxx 前面的 # ,并插入管理員的IP地址 來代替xx.xx.xx.xxx。
# Protects wp-config
<Files wp-config.php>
Order Allow,Deny
# Allow from xx.xx.xx.xxx
# Allow from yy.yy.yy.yyy
Deny from all
</Files>3.防止XML-RPC DDoS攻擊 WordPress 默認支持XML-RPC ,這是一個使遠程發(fā)布接口 。然而,雖然它是一個很棒的功能,但它也是WP最大的安全漏洞之一,因為黑客可能利用它來進行DDoS攻擊 。
如果您不想使用此功能,最好禁用它 。和以前一樣,你可以通過去除 # Allow from xx.xx.xx.xxx前面的 # 和添加管理員(或多個)的IP地址。
# Protects XML-RPC, prevents DDoS attack
<FilesMatch "^(xmlrpc\.php)" >
Order Deny,Allow
# Allow from xx.xx.xx.xxx
# Allow from yy.yy.yy.yyy
Deny from all
</FilesMatch>4.保護網(wǎng)站后臺 通過僅向管理員提供訪問權(quán)限來保護網(wǎng)站后臺 也是一個好主意。在這里,不要忘記添加至少一個“允許”例外IP, 否則您根本無法訪問網(wǎng)站后臺。
注:如果你的寬帶沒有固定的IP,請務(wù)必不要設(shè)置,否則你可能無法訪問網(wǎng)站后臺!
# Protects admin area by IP
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
Order Deny,Allow
Deny from all
Allow from xx.xx.xx.xxx
Allow from yy.yy.yy.yyy
</LIMIT>5.阻止目錄列表 大多數(shù)WordPress網(wǎng)站不會禁用目錄列表,這意味著任何人都可以瀏覽其文件夾和文件 ,包括媒體上傳和插件文件。不用說,這是一個巨大的安全漏洞。
下面,你可以看到典型的WordPress目錄列表的外觀 。
幸運的是,您只需要一行代碼就 可以阻止此功能。此代碼段將向想要訪問您的目錄的任何人返回403錯誤消息 。
# Prevents directory listing
Options -Indexes6.防止用戶名枚舉 如果啟用了WP永久鏈接,則使用作者存檔枚舉用戶名 非常容易。然后,顯示的用戶名(包括管理員的用戶名)可用于暴力攻擊 。
將下面的代碼插入.htaccess文件以防止用戶名枚舉 。
# Prevents username enumeration
RewriteCond %{QUERY_STRING} author=d
RewriteRule ^ /? [L,R=301 ]7.阻止垃圾郵件發(fā)送者和機器人 有時你可能希望限制某些IP地址的訪問 。此代碼段提供了一種簡單的方法來阻止你已經(jīng)知道的垃圾郵件發(fā)送者和機器人。
# Blocks spammers and bots
<Limit GET POST >
Order Allow,Deny
Deny from xx.xx.xx.xxx
Deny from yy.yy.yy.yyy
</Limit >
Allow from all8.防止圖片盜鏈 雖然不是安全威脅,但圖片盜鏈 仍然是一件煩人的事情。人們不僅在未經(jīng)您許可的情況下使用你的圖片, 可能會導(dǎo)致你的帶寬費用支出。使用這幾行代碼,您可以保護你的網(wǎng)站被盜鏈圖片。
# Prevents image hotlinking
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite.com [NC]
RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yourwebsite2.com [NC]
RewriteRule \.(jpe?g?|png|gif|ico|pdf|flv|swf|gz)$ - [NC,F,L]9.限制對插件和主題PHP文件的直接訪問 如果有人直接調(diào)用您的插件和主題文件 ,無論是意外發(fā)生還是惡意攻擊者,都會很危險。此代碼段來自Acunetix網(wǎng)站安全公司 ; 您可以在他們的博文中 閱讀有關(guān)此漏洞的更多信息。
# Restricts access to PHP files from plugin and theme directories
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/
RewriteRule wp-content/plugins/(.*\.php)$ - [R=404 ,L]
RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php
RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/
RewriteRule wp-content/themes/(.*\.php)$ - [R=404 ,L]10.設(shè)置永久重定向 你可以使用.htaccess 輕松處理永久重定向 。首先,你必須添加舊URL ,然后按照指向要將用戶重定向到的頁面的新URL 。
# Permanent redirects
Redirect 301 /oldurl1/ http://yoursite.com/newurl1
Redirect 301 /oldurl2/ http://yoursite.com/newurl2 11.將訪問者發(fā)送到維護頁面 如果你的網(wǎng)站在維護,我們希望告知訪客這個事情,可以使用規(guī)則去實現(xiàn)。你需要一個單獨的維護頁面 (maintenance.html在示例中)才能使此.htaccess規(guī)則生效。此代碼將你的WordPress站點置于維護模式 。
# Redirects to maintenance page
<IfModule mod_rewrite.c >
RewriteEngine on
RewriteCond %{REMOTE_ADDR} !^123\.456\.789\.000
RewriteCond %{REQUEST_URI} !/maintenance.html$ [NC]
RewriteCond %{REQUEST_URI} !\.(jpe?g?|png|gif) [NC]
RewriteRule .* /maintenance.html [R=503,L]
</IfModule > 12.限制對 wp-includes 目錄的所有訪問 /wp-includes/文件夾包含必需的核心WordPress文件 。沒有內(nèi)容、插件、主題或用戶可能想要訪問的任何其他內(nèi)容。因此,為了加強安全性,最好限制 對它的所有訪問 。
# Blocks all wp-includes folders and 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 > 13.阻止跨站點腳本(XSS) 以下代碼片段來自WP Mix ,它可以保護你的站點免受一些常見的XSS攻擊 ,即腳本注入和嘗試修改全局和請求變量。
# Blocks some XSS attacks
<IfModule mod_rewrite.c>
RewriteCond %{QUERY_STRING} (\|%3 E) [NC,OR ]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0 -9 A-Z]{0 ,2 }) [OR ]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0 -9 A-Z]{0 ,2 })
RewriteRule .* index.php [F,L]
</IfModule>14.啟用瀏覽器緩存 正如我之前提到的,.htaccess不僅有利于安全性和重定向,還可以幫助您管理緩存 。下面的代碼片段來自Elegant Themes ,它通過允許訪問者保存某些類型的文件使瀏覽器緩存成為可能 ,因此下次訪問時他們不必再次下載它們。
# Enables browser caching
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>15.設(shè)置自定義錯誤頁面 你可以使用.htaccess在WordPress網(wǎng)站上設(shè)置自定義錯誤頁面。對于這種方法,您還需要創(chuàng)建自定義錯誤頁 (custom-403.html,custom-404.html在本例中),并上傳 到你的網(wǎng)站根目錄。
您可以為所需的任何HTTP錯誤狀態(tài)代碼 (4XX和5XX狀態(tài)代碼)設(shè)置自定義錯誤頁面。
# Sets up custom error pages
ErrorDocument 403 /custom-403. html
ErrorDocument 404 /custom-404. html好了,今天就分享這些 .htaccess 代碼片段,如果你有其他不錯的片段,歡迎和我們分享!
參考: https://www./blog/useful-htaccess-snippets-for-wordpress/