.htaccess 是一個特殊的文件,它能改變服務器的設置,比如它可以定制 404 錯誤頁面。
.htaccess 看起來很復雜,其實并不難,我們可以把它認為是由一些簡單命令或者用法說明組成的文本文件,不過它卻能極大的提高站點的安全性。
阻止通過讀取和寫入 .htaceess 來更改服務器安全性的設置。
<files .htaccess>order allow,denydeny from all</files>
隱藏服務器的數字簽名之后,入侵者將更難找到安全漏洞,因為他們不知道網站背后的服務器是什么。
ServerSignature Off
這個能夠幫助阻止 DoS 攻擊(用戶通過上傳巨大的文件來沖垮服務器)并且能夠節(jié)約帶寬。
LimitRequestBody 10240000# limit file uploads to 10mb
這個設置是可選的,并且要特別小心處理。這些指令告訴服務器不要使用 mod_security 過濾器,因為 mod_security 過濾器不允許用戶發(fā)表含有這些單詞 “curl”,“lynx” 或者 “wget” 等等單詞的文章。這個看起來有點瑣碎,但是這個讓一些站點頭痛,因為這些單詞幾乎那些站點每天都會用到。
SecFilterInheritance Off
我們可以通過 .htaccess 文件阻止入侵者讀取和寫入 WordPress 的配置文件。
<files wp-config.php>order allow,denydeny from all</files>
這條指令做的更多是網站的易用性而不是安全性。它們指定了一旦服務器錯誤,哪個頁面將被顯示,如頁面找不到(代碼 404) 禁止訪問(代碼 403)等等。
ErrorDocument 404 /notfound.phpErrorDocument 403 /forbidden.phpErrorDocument 500 /error.php
這條指令阻止瀏覽服務器上沒有 index 文件(如 index.html,index.php 等等)的文件夾目錄內容。
# disable directory browsingOptions All -Indexes
這個能夠阻止其他網站盜鏈圖片,當有人試著直接鏈接到你的網站上圖片,下面的代碼將會使其顯示 stealingisbad.gif
這張圖片。
#disable hotlinking of imagesRewriteEngine onRewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http://(www.)?yourdomain.com/.*$ [NC]RewriteRule .(gif|jpg|png)$ http://www.yourdomain.com/stealingisbad.gif [R,L]
這能夠幫助提高網站的易用性和提高網站在搜索引擎中的排名。總之,它會把來自 http://yourdomain.com
的請求重定向到 http://www.yourdomain.com/
# set the canonical urlRewriteEngine OnRewriteCond %{HTTP_HOST} ^yourdomain.com$ [NC]RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]
最后這條指令將會阻止用戶直接從其他網站的留言提交框發(fā)表留言,雖然這不是一個可以的防止所有垃圾垃圾留言的方法,但是它確實能夠幫助你。
# protect from spam commentsRewriteEngine OnRewriteCond %{REQUEST_METHOD} POSTRewriteCond %{REQUEST_URI} .wp-comments-post.php*RewriteCond %{HTTP_REFERER} !.*yourdomain.com.* [OR]RewriteCond %{HTTP_USER_AGENT} ^$RewriteRule (.*) ^http://%{REMOTE_ADDR}/$ [R=301,L]
這些代碼應該放到 .htaccess 文件中 WordPRess 默認用于永久鏈接的代碼之后。當然還有很多 htaccess 的指令和很多的方法可以提高網站的可用性和安全性,不過這里所列出的應該占了日常所需的大部分了。當你上傳該文件到服務器上之后,你應該仔細測試直到網站所有的功能都工作正常。檢查下是否受保護的文件能否被訪問,依舊允許訪問的文件和文件夾是否能夠正常訪問。