.htaccess 是一个特殊的文件,它能改变你服务器上的设置和允许你做很多不同的东东,如它能定制化 404 错误页面。.htaccess 其实并不难,我们可以把它认为它只是由一些简单命令或者用法说明组成的文本文件,不过它却能极大的提高站点的安全性。
1. 保护 .htaccess 自身的安全性
阻止用户通过读取和写入 .htaceess 来更改服务器安全性的设置。
<files .htaccess> order allow,deny deny from all </files>
2. 隐藏服务器的数字签名
隐藏服务器的数字签名之后,入侵者将很难有机会找到安全漏洞,因为他们不知道背后的服务器是什么。
ServerSignature Off
3. 限制上传文件的大小
这个能够帮助阻止 DoS 攻击(用户通过上传巨大的文件来冲垮服务器)并且能够节约带宽。
LimitRequestBody 10240000 # limit file uploads to 10mb
4. 停止 mod_security 过滤器
这是一个可选的设置并且要小心处理。这些指令告诉服务器不要使用 mod_security 过滤器,因为 mod_security 过滤器不允许用户发表含有这些单词 “curl”,“lynx” 或者 “wget” 等等单词的文章。这个看起来有点琐碎,但是这个让一些站点头痛,因为这些单词几乎那些站点每天都会用到。
SecFilterInheritance Off
5. 保护 wp-config.php 文件
我们可以通过 .htaccess 文件阻止用户读取和写入 WordPress 的配置文件。这个指令假设 WordPress 是安装在根目录。
<files wp-config.php> order allow,deny deny from all </files>
6. 自定义错误文档
这条指令做的更多是站点的可用性而不是安全性。它们指定了一旦服务器错误,哪个页面将被显示,如页面找不到(代码 404) 禁止访问(代码 403)等等。
ErrorDocument 404 /notfound.php ErrorDocument 403 /forbidden.php ErrorDocument 500 /error.php
7. 禁止浏览目录
这将阻止服务器在没有 index 文件(如 index.html,index.php 等等)的情况下显示文件夹目录内容,阻止用户看到文件夹的内容使得更难对网站发动攻击。
# disable directory browsing Options All -Indexes
8. 防止图片盗链
这个能够阻止其他网站盗链本网站的图片,迫使他们 要么指向整个页面,或者其他存储图像的地方。这个保存了宝贵的带宽并且能够增加流量(虽然只是一点点)。当有人试着直接链接到你的网站来显示图片,下面的代码将会得显示 stealingisbad.gif
这张图片。
#disable hotlinking of images RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^https://(www\.)?yourdomain.com/.*$ [NC] RewriteRule \.(gif|jpg|png)$ https://www.yourdomain.com/stealingisbad.gif [R,L]
9. 在你的站点给每个 URL 设置符合规定的或者“标准”的链接
这能够帮助提高网站的可用性和提高网站在搜索引擎中的排名。总之,它会把来自https://yourdomain.com
的请求重定向到 https://www.yourdomain.com/.
# set the canonical url RewriteEngine On RewriteCond %{HTTP_HOST} ^yourdomain\.com$ [NC] RewriteRule ^(.*)$ https://www.yourdomain.com/$1 [R=301,L]
10. 保护博客免受垃圾留言的侵扰
最后的那条指令将会阻止用户直接从其他网站的留言提交框发表留言,虽然这不是一个可以的防止所有垃圾垃圾留言的方法,但是它确实能够帮助你。
# 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 (.*) ^https://%{REMOTE_ADDR}/$ [R=301,L]
加入这些指令之后,你应该添加 WordPress 用于管理永久链接的代码。还有很多的指令和很多的方法可以提高网站的可用性和安全性,不过这里所列出的应该占了日常所需的大部分了。当你上传该文件到服务 器上之后,你应该仔细测试直到所有的东西都工作正常。检查下是否受保护的文件还能不能被访问,你依旧允许访问的文件和文件夹能 否还能访问