首页 > 新闻资讯 > 十个实用的WordPress安全技巧

十个实用的WordPress安全技巧

15条评论
标签:
更多

安全,又是安全问题,WordPress啦已经好几次谈到这个话题了,这是因为安全问题实在太重要了。家里的防盗窗、防盗门以及汽车报警器等一切也都是出于安全考虑,同样地,互联网上的安全也非常重要,特别对于我们这种以网站或博客为生的人们。这篇文章就跟大家介绍一些实用的技巧以保证WordPress博客的安全。

1. 阻止透露不必要的信息

问题
当登录WordPress博客失败的时候,系统会显示错误提示信息。如果你忘记密码了,这个提示会对你有所帮助,可是这却也让那些想要攻击你博客的人有机可乘。因此,为何不阻止WordPress显示这个登录失败时的错误提示呢?

解决办法
想要删除登录错误提示信息,只要打开你的functions.php文件,并粘贴下面的代码:

add_filter('login_errors',create_function('$a', "return null;"));

保存此文件,再次检查下你就会发现登录失败时就没有错误信息提示了。

代码解释
这段代码里,我们添加了一个简单的hook来覆盖login_errors()函数。由于创建的自定义函数返回null,因此就只会显示一个空白的字串。

来源

2. 强制使用SSL

问题
如果你担心数据被拦截,你完全可以使用SSL。SSL是什么?它是基于WEB应用的安全加密协议。

你是否知道也可以给WordPress博客添加SSL加密?但是也并非是所有的主机都允许你使用SSL加密证书,如果你的博客是由IXWebhosting或美国主机Hostease托管的,那么就可以启用SSL,而且这两个主机都有中文站。

解决办法
一旦确定你的web服务器可以处理SSL,那问题就简单了,只要打开你的配置文件wp-config.php (在安装WordPress的根目录下),然后粘贴下面的代码:

define('FORCE_SSL_ADMIN', true); 

保存文件即可。

代码解释
这个代码比较简单。 WordPress使用了很多常量来配置,在这里我们只是定义了FORCE_SSL_ADMIN 常量并将它的值设置为 true。这样一来,你的WordPress博客就实现SSL加密了。

来源

3. 使用 .htaccess来保护配置文件wp-config

问题
作为一名 WordPress用户,你应该知道配置文件wp-config.php的重要性。 此文件包含了所有可访问数据库的信息:用户名、密码、服务器名称等。 保护 wp-config.php 配置文件是如此的关键,那么如何利用Apache来解决这个问题呢?

解决办法
.htaccess文件位于WordPress安装目录下,首先要对它做个备份(如此重要的文件,任何改动之前一定要先备份),打开它然后粘贴下面的代码:

<files wp-config.php> order allow,deny deny from all </files> 

代码解释
.htaccess 文件非常强大,也是防止他人访问你的文件的最佳工具。这段代码里,我们只是创建了一个规则来阻止任何人访问 wp-admin.php文件,防止bots攻击。

来源

4. 将不受欢迎用户和Bots列入黑名单

问题
这个是比较现实的问题:今天被某个人骚扰,他可能下一次还会继续骚扰你。你是否有注意到每天同个人/垃圾留言机器光顾你的博客无数次留下无数恼人的评论。处理这个问题的方法非常简单:直接禁止他们访问你的博客。

解决方法
.htaccess文件粘贴下面的代码,再次说明在修改之前,切记备份.htaccess文件。并记得将123.456.789 该成你想要禁止的IP地址。

<Limit GET POST PUT> order allow,deny allow from all deny from 123.456.789 </LIMIT> 

来源

5. 防止WordPress博客的脚步侵入

问题
保护动态完全特别重要。大多数开发人员都只保护GET和POST的请求,但有时候这样并不够。我们应该注意防止脚步侵入以及任何试图修改PHP GLOBALS和 _REQUEST变量。

解决方法
下面的代码可以阻止脚步入侵以及任何试图修改PHP GLOBALS 和_REQUEST变量。将代码粘贴到你的 .htaccess文件 (WordPress安装目录下)。

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
RewriteRule ^(.*)$ index.php [F,L]

代码解释
利用   .htaccess文件,我们可以检查请求。在这里,我们检查该请求是否包含一个 <script> ,它是否有试图修改PHP GLOBALS或_REQUEST的变量值。如果符合任何一个条件,该请求就会被阻止,返回403错误到客户端浏览器。

来源

6. 回击内容剽窃者

问题
如果你的博客有点知名度,很有可能就会有一些人在未经你的同意下直接使用你的内容。除了侵犯你的版权之外,由于盗用你的图片,对你服务器带宽也是一个很大的损耗。

解决办法
.htaccess文件里粘贴下面的代码:

RewriteEngine On #Replace ?mysite\.com/ with your blog url RewriteCond %{HTTP_REFERER} !^http://(.+\.)?mysite\.com/ [NC] RewriteCond %{HTTP_REFERER} !^$
#Replace /images/nohotlink.jpg with your "don't hotlink" image url
RewriteRule .*\.(jpe?g|gif|bmp|png)$ /images/nohotlink.jpg [L] 保存之后,只有你的网站网站才能链接到你的图片,而其它盗链网站就无法显示你的图片。

代码解释
在这段代码里,首先检查引荐人是否与自己博客的URL地址一致。如果不一致,那么以下扩展名的文件,JPG, GIF, BMP或 PNG就不会显示而用 nohotlink图片代替。

来源

7. 创建一个插件来阻止恶意URL的请求

问题
黑客通常通过恶意查询来找出并攻击一个博客的薄弱点。

解决办法
将下面的代码粘贴在一个文本文件里并命名为blockbadqueries.php。保存此文件并将它上传到 wp-content/plugins 目录,然后像其他插件一样激活它。这样你的博客就不会遭受恶意的查询。

<?php
/*
Plugin Name: Block Bad Queries
Plugin URI: http://perishablepress.com/press/2009/12/22/protect-wordpress-against-ma...
Description: Protect WordPress Against Malicious URL Requests
Author URI: http://perishablepress.com/
Author: Perishable Press
Version: 1.0
*/

global $user_ID;

if($user_ID) {
  if(!current_user_can('level_10')) {
    if (strlen($_SERVER['REQUEST_URI']) > 255 ||
      strpos($_SERVER['REQUEST_URI'], "eval(") ||
      strpos($_SERVER['REQUEST_URI'], "CONCAT") ||
      strpos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
      strpos($_SERVER['REQUEST_URI'], "base64")) {
        @header("HTTP/1.1 414 Request-URI Too Long");
    @header("Status: 414 Request-URI Too Long");
    @header("Connection: Close");
    @exit;
    }
  }
}
?>
代码解释 这段代码非常简单,它检查特别长的请求字符串(超过255个字符) 以及URL中是否存在eval或 base64 PHP 函数。如果符合其中的任何一个条件,该插件就会想客户端浏览器发送414错误。

来源

8. 删除你的 WordPress版本号

问题
大家都知道,WordPress会自动在你的博客文件的头部显示版本号。如果你的博客一直都是最新版的话问题不大。但是如果由于某些原因你的WordPress版本并没有更新,却仍然显示出来的话,就会被黑客利用。

解决方法
在主题的functions.php文件里粘贴下面的代码,保存,然后刷新你的博客,这样你的WordPress版本号就不会出现了。

remove_action('wp_head', 'wp_generator');

代码解释
要执行某个行动时, WordPress是用“hook”机制,也就是说可以让你将一个函数hook到另一个函数里。显示WordPress版本号的 wp_generator函数被hook了。我们可以移除这个 hook并通过使用 remove_action() 函数来阻止其执行。

来源

9.更改默认的用户名“Admin”

问题
如果你使用的是默认的“admin”用户名,黑客只需要攻破你的密码即可入侵你的一切。这无疑让黑客更容易得手,所以我们一直强调你应该更改默认的用户名 “admin” ,用个别人比较难猜得出来的用户名。

不过还好WordPress 3.0安装时可以让你选择自己喜欢的用户名。 如果你还在使用旧版本并且你的用户名还没有更改过,那么现在该动手了。

解决方法
如果你还没有更改“admin”用户名,只要在数据库中运行下面的SQL查询就可以更改。

UPDATE wp_users SET user_login = '你的新用户名' WHERE user_login = 'Admin';

代码解释
用户名是保存在数据库中的。想要更改的话,只要一个简单的查询更新即可。注意:这个查询并不会将你先前用“admin”账户发布的文章的用户名变成新的用户名,如果需要的话,请查看下面的来源文章。

来源

10.阻止浏览目录

问题
默认情况下,大多数主机允许显示目录列表。因此,如果你在浏览器地址栏输入 www.yourblog.com/wp-includes,你就看到所有在该目录下的文件,这无疑是一个很大的安全隐患。

解决方法
只需在Apache配置里添加:

Option -Indexes

来源

原文

* 版权声明:作者WordPress啦! 转载请注明出处。

#1
交个朋友
#2
实在设置下了,可是我实在没精神折腾WP了。也许,这只是个借口
#3
都是很实用的技巧,我们需要更加注意自身博客的安全性了。
#4
一直以来使用wp,感觉没有出现什么被黑的情况
#5
为什么RSS只输出一部分,看起来很麻烦.全文版不能出来吗.
#6
没有时间折腾了,这十条能做到的很少
#7
我来回访。。很实用的小技巧。。
#8
好像我还没怎么重视过安全问题。看来我是来补课的
#9
这些方法很好呀。。。。
#10
想问下老是有注册用户是为何? 我其实只把注册用户设置为订阅者 更本没啥用 可有段时间就特别多的注册用户 后来我把注册链接关了 但是还是主题里有人植入代码放了乱七八糟广告 浏览器也不是所有都看得到 我在手机上才发现的。。。 难道有关系吗
#11
跳过去把十三个 WordPress SQL查询 收藏了,非常不错的技巧。
#12
以前用的wp,后来换成emlog了,呵呵。现在安全很让人头疼的 你的文章页面怎么错位了?
#13
学习了..呵呵
#14
收藏,正要学怎么用WP。 另:验证码一点就到别的地方去了,一般验证码点了是换一个吧。 退回来后你的页面也变了。
#15
这些安全技巧真是既安全又实用 哈哈 好好学习学习