通过修改.htaccess提高WordPress安全性
最近两天一直在为WP的安全性担忧,主要的困扰就是wp-config这个文件,里面保存了数据库名称和密码,而且默认情况下可以很轻易的被人下载。想了很多办法,也试图将这个文件换个文件名,但会引起一系列连锁反应——还需要修改很多其他文件。最终,找到了利用.htaccess来提高WordPress安全性的简易办法。在这里与大家分享一下。
在这里仅讨论关于.htaccess的设置。其它诸如删除WordPress版本信息、设置加密字符串等网上已经有很多的说明了,大家也可以通过搜索“WordPress安全白皮书”查找到相关内容。
最后再多说一句,为了保证安全,请在修改任何文件之前,首先做好备份!
主要涉及的.htaccess设置内容:
- 保护.htaccess(安全性)
- 关闭服务器签名(安全性)
- 限制上传大小(安全性)
- 保护wp-config.php(安全性)
- 限制IP访问(安全性,可用性)
- 自定义浏览器访问错误提示(可用性)
- 禁用目录浏览(安全)
- 重定向旧文件(可选重定向页)
- 防止图片盗链(带宽)
- 启用PHP的压缩(带宽)
- 为您的网站设置规范或“标准”的URL(搜索引擎优化,可用性网址)
1、第一步:创建一个空.htaccess文件。可以用记事本等文本编辑器创建,但不能用Word等编辑器。先用记事本将文件存储为htaccess.txt文件,然后通过修改文件名及扩展名,将文件名改为e.htaccess,不必担心,当传到服务器后,可以将“e”删除。(不知道Linux和Mac如何操作)
2、第二步:向htaccess.txt添加内容,并用它来更好地管理PHP或JavaScript代码。
下面将针对WordPress环境提供一份.htaccess样本。在使用的时候,请删除“#”行内容:
# 保护.htaccess文件本身
<files .htaccess>
order allow,deny
deny from all
</files>
# 关闭服务器签名
ServerSignature Off
# 限制上传大小为10mb
LimitRequestBody 10240000
# 保护wp-config.php
<files wp-config.php>
order allow,deny
deny from all
</files>
# 限制IP访问
order allow,deny
#deny from 000.000.000.000(也可以指定要限制或允许的IP地址)
allow from all
# 自定义浏览器访问错误提示
ErrorDocument 404 /notfound.php
ErrorDocument 403 /forbidden.php
ErrorDocument 500 /error.php
# 禁用目录浏览
Options All -Indexes
# 重定向旧文件到新文件
Redirect 301 /old.php http://www.yourdomain.com/new.php
#锁定来自某个网址的访问
RewriteEngine on
RewriteCond %{HTTP_REFERER} digg\.com [NC]
RewriteRule .* – [F]
# 防止图片盗链
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com/.*$ [NC]
#RewriteRule \.(gif|jpg)$ – [F]
#RewriteRule \.(gif|jpg)$ http://www.yourdomain.com/stealingisbad.gif [R,L]
# PHP压缩-谨慎使用
<ifmodule mod_php4.c>
php_value zlib.output_compression 16386
</ifmodule>
# 为您的网站设置规范或“标准”的URL
RewriteEngine On
RewriteCond %{HTTP_HOST} ^yourdomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]
# 防止垃圾评论
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]
修改PHP5文件上传限制
<IfModule mod_php5.c>
php_value post_max_size 50m
php_value upload_max_filesize 50m
php_value max_execution_time 600
php_value max_input_time 600
</IfModule>
3、第三步:上传htaccess.txt.到服务器。请通过ASCII模式上传,上传后注意修改文件名为“.htaccess”。一旦重新命名完成,请注意修改.htaccess文件的文件权限为644。
4、第四步:测试,测试,再测试。打开网站,首先检查是否能够正常浏览。然后请检查是否可以访问你保护的文件,或尝试看看目录列表。不是所有的变量都可测试的,但尽可能完整测试你要保护的文件。
注意:如果你的WordPress已经使用自定义固定链接结构格式的网页名称,你需要更新htaccess文件内的代码。
最后,给大家提供一个在线.htaccess编辑器http://cooletips.de/htaccess/
