如何构建安全的 WordPress
构建安全的 WordPress 涉及到很多方面的东西:
首先要及时修补服务器的安全漏洞,阿里云这一方面就做的很不错,主机有任何安全问题或者有新的漏洞,都会第一时间通知。
做好做一步之后,不要给 WordPress 设置过于简单的管理员密码,比如123456,大部分安全的问题,都是密码过于简单造成的。
如果上面两步都处理完之后,我们还需要从程序方面加强 WordPress 的安全性,今天这篇文章就把「WordPress 果酱」这方面的文章总结一下:
防止用户名暴露
因为默认情况下 WordPress 用户的 user_nicename
和 user_login
是一样的,这样只要通过下面三个方法猜测到 user_login
,然后就可以暴力破解。
1. 作者的文章列表链接是:https://blog.wpjam.com/author/superdenis/
,其中的 superdenis
是user_nicename
。
2. 在 body 的 class 中,如果当前用户的作者页,也会出现用户的 user_nicename
。
3. 和 comment 的 class 中,如果留言的用户也是当前站点的用户,也会出现用户的 user_nicename
。
怎么处理呢?
修改 user_nicename,「WPJAM #用户管理插件#」在 WordPress 后台提供修改的 user_nicename
的功能
或者通过自定义代码设置使得:user_login
不出现在作者的文章列表链接中,也不出现在 body_class
和 comment_class
中。具体的代码参考:WordPress 安全第一步:防止用户名暴露。
隐藏登录失败的错误信息
默认情况下,在登录 WordPress 的时候,如果输入的用户名不存在,WordPress 会报「未知用户名」的错误,如果用户名正确,密码错误的话,WordPress 会报「密码不正确」的错误:
这样是存在一定的安全隐患的,首先让暴力破解知道快速定位用户名,确定了用户名,只需要给他时间,就可以开始暴力破解了。所以最好统一改成:「用户名或者密码错误」的错误信息,让猜去吧。
限制登录次数,防止暴力破解
WordPress 的一个重大的安全隐患就是 WordPress 没有防止暴力破解的功能,在登录界面,用户可以不停的登录尝试输入账号密码,直到暴力破解,如果密码不够复杂,破解的人如果被使用软件扫描的话,那么很快就会被破解的。
我们可已通过 Memcached 来记录失败登录的次数,超过一定次数之后就限制登录,需要等待一段时间之后才能再次登录。