WordPress安全提示

网站安全关系重大。若发生安全事故,轻则导致数据丢失,重则被不法分子利用。下面的经验总结,希望对WordPress的人士有用。

用户设置

WordPress自带5种用户角色,每种具有确定的权限。其中,管理员(manager)具有全部权限,编辑(editor)可修改其他作者的文章,作者(author)可修改自己的文章,投稿者(contributor)只能建立文章但要由编辑进行发表,而订阅者(subscriber)就只能查看文章了。

安装WordPress时,需要为整个站点设置超级管理员用户,该用户的登录名最好不容易猜测。例如,admin就是非常糟糕的选择。随后,最好设立一个管理员用户,用于核心程序的更、主题和插件的安装、其他用户的管理等。再设立一个作者用户,用于日常的写作。

在前台界面,用户的登录名非常容易获取。即使修改了用户的昵称,真实的登录名也可以通过作者页面的网址或REST API查询到,为网站的安全带来隐患。一种解决办法是,安装Edit Author Slug插件,再到后台将用户别名(slug)修改为其他字符串,以此达到隐藏登录名的目的。

此外,每个用户的密码要尽可能复杂。这样,即使外人获取到了真实的登录名,要进入后台的代价也很高。

管理接口保护

WordPress有3种接口可以登录:常见的管理后台,XML-RPC以及REST API。

常见的管理后台的网址为/wp-login.php和/wp-admin/。对于前者,可以通过在主题后子主题的functions.php文件中加代码,检查特定的查询字符串,若输入与设置不符,这重定向到首页。对于后者,可以在操作系统中为相应的目录设立密码。如使用Ubuntu,可在/etc/apache2/sites-available/下的相应配置文件中为/wp-admin/对应的目录设置密码。

XML-RPC是一种与其他程序进行对接的接口,但也容易带来安全隐患,建议禁用。最简单的方法是,安装并启用Disable XML-RPC 插件。如能修改.htaccess,可以将对xmlrpc.php的请求都拒绝掉。

REST API是一种较新的接口,以流行的json格式进行数据交互,非常适合前、后台分离的网站,也为WordPress与桌面程序、移动应用之间的整合提供了很大的想象空间。由于依赖OAuth认证,这种界面相对而已是非常安全的。如果已经通过Edit Author Slug插件隐藏了真实登录名,就无需过多担忧了。也可以安装Disable REST API 插件,禁用该接口。

数据库保护

我们应该为每个WordPress程序设置单独的数据库用户。这样,即使不小心泄露了用户名和密码,也不会危及MySQL系统中的其他数据库。

将默认的数据库表前缀(wp_)修改为较复杂的前缀,可有效防止SQL注入攻击。

链接加密

非加密的链接(http),所有数据都是以明文形式进行传输的,其中的用户名和密码非常容易被嗅探到。而且,它容易遭到运营商劫持,导致页面内容被篡改、加入乱七八糟的广告。

启用加密链接(https)需要安装SSL证书。选用证书供应商的时候要十分小心。推荐免费的Let’s Encrypt。

操作系统安全

操作系统是我们网站的基石,其安全不言而喻。这是一个很大的课题,笔者经验不多,待以后更新。

首先应保持系统更新。

其次,设置合理的用户权限。

其他安全措施

选用主题和插件,要确保其来源可信。

定时备份数据库和媒体文件。

关注操作日志。推荐安装Simple History插件。