如何在WordPress中禁用作者查询

WordPress 小问题 WordPress

我这几天看Google Analytics,发现有很多的404,再看下去发现是访问/?author=2的,我去搜了一下,发现这个其实可能还是个很大的安全问题。

众所周知,想知道 WordPress 网站的用户名很容易:只需在网站的URL后面加上一个参数?author=1即可。而一旦黑客知道了注册用户的用户名,尤其是管理员,他们的攻击目标就更加明确了。

Sponsored links
Sponsored links

作者URL查询扫描究竟是如何作用的?

你可以在您的网站上尝试一下。在浏览器地址栏中输入你的 WordPress 站点的主页,然后在结尾加上一个参数:?author=1
例如: https://kxnotes.com/?author=1

然后WordPress看到“作者”查询,它会尝试在系统上找到具有该 ID 的用户名。如果该用户存在,它会将您的 URL 重定向到该作者的 WordPress页面。而这个用户名就是管理员的用户名。

当然,也许你的管理员用户名的 ID 不是 1。但别人可以编写一个脚本来执行下列操作:
https://www.kxnotes.com/?author=1
https://www.kxnotes.com/?author=2
https://www.kxnotes.com/?author=3
https://www.kxnotes.com/?author=4

https://www.kxnotes.com/?author=100

一旦爬虫找到一个有效的用户名,那别人就得到了一个有效的用户名。

如何在WordPress中禁用作者查询

将以下过滤器添加到你的functions.php文件中。如果你使用了子主题,那就直接加在子主题的functions.php文件中。

add_action('template_redirect', 'disableAuthorUrl');

function disableAuthorUrl(){
    if (is_author()) {
       wp_redirect(home_url());
       exit();
    }
}

这将检查所有传入的请求, 检查请求的页面是否是作者页面, 如果是, 则重定向到主页,你可以选择到其他页面。

被人知道用户名是安全风险吗?

你的用户名被别人知道并不是真正的安全风险。比这更重要的是设一个强密码,你的网站使用SSL,最好还能有两步验证。

Rate this post