.htaccess 是一个特殊的文件,它能改变服务器的设置,比如它可以定制 404 错误页面。
.htaccess 看起来很复杂,其实并不难,我们可以把它认为是由一些简单命令或者用法说明组成的文本文件,不过它却能极大的提高站点的安全性。
阻止通过读取和写入 .htaceess 来更改服务器安全性的设置。
<files .htaccess>
order allow,deny
deny from all
</files>
隐藏服务器的数字签名之后,入侵者将更难找到安全漏洞,因为他们不知道网站背后的服务器是什么。
ServerSignature Off
这个能够帮助阻止 DoS 攻击(用户通过上传巨大的文件来冲垮服务器)并且能够节约带宽。
LimitRequestBody 10240000
# limit file uploads to 10mb
这个设置是可选的,并且要特别小心处理。这些指令告诉服务器不要使用 mod_security 过滤器,因为 mod_security 过滤器不允许用户发表含有这些单词 “curl”,“lynx” 或者 “wget” 等等单词的文章。这个看起来有点琐碎,但是这个让一些站点头痛,因为这些单词几乎那些站点每天都会用到。
SecFilterInheritance Off
我们可以通过 .htaccess 文件阻止入侵者读取和写入 WordPress 的配置文件。
<files wp-config.php>
order allow,deny
deny from all
</files>
这条指令做的更多是网站的易用性而不是安全性。它们指定了一旦服务器错误,哪个页面将被显示,如页面找不到(代码 404) 禁止访问(代码 403)等等。
ErrorDocument 404 /notfound.php
ErrorDocument 403 /forbidden.php
ErrorDocument 500 /error.php
这条指令阻止浏览服务器上没有 index 文件(如 index.html,index.php 等等)的文件夹目录内容。
# disable directory browsing
Options All -Indexes
这个能够阻止其他网站盗链图片,当有人试着直接链接到你的网站上图片,下面的代码将会使其显示 stealingisbad.gif
这张图片。
#disable hotlinking of images
RewriteEngine on
RewriteCond %{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 url
RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]
最后这条指令将会阻止用户直接从其他网站的留言提交框发表留言,虽然这不是一个可以的防止所有垃圾垃圾留言的方法,但是它确实能够帮助你。
# protect from spam comments
RewriteEngine On
RewriteCond %{REQUEST_METHOD} POST
RewriteCond %{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 的指令和很多的方法可以提高网站的可用性和安全性,不过这里所列出的应该占了日常所需的大部分了。当你上传该文件到服务器上之后,你应该仔细测试直到网站所有的功能都工作正常。检查下是否受保护的文件能否被访问,依旧允许访问的文件和文件夹是否能够正常访问。