阻止通过用户 ID 获取用户名

相比密码,用户名并不是什么秘密,通常不需要保密,因为即使知道了登入用户名,没有密码,也不能登入 WordPress 账户。

但是让人知道了用户名,那么距离登入的几率可以说是更接近了一步,人们可以专注于暴力破解密码(brute-force the password)或以类似的方法展开攻击。所以在某些程度上,建议将用户名保密起来以加强安全性。

在默认情况下,人们可以在 WordPress 网站通过 https://example.com/?author={id} 获得用户名,所以人们可以从 ID 1 或任何号码开始循环获取许多用户名,因为 WordPress 会重定向/转址(redirect)到 https://example.com/author/{用户名}/ 如果网站存在这个 ID 的用户/作者。

那么该如何阻止这些行为呢?

要解决此问题,我们可以在 .htaccess 文件添加以下代码:

# BEGIN - Block Username enumeration

	RewriteCond %{QUERY_STRING} ^author=([0-9]*)
	RewriteRule .* /? [L,R=302]

# END - Block Username enumeration

对于 Nginx 用户,可以添加以下代码至 server block 中:

if ($args ~ "^/?author=([0-9]*)") {
	return 302 $scheme://$server_name;
}

这将会阻止人们在 WordPress 网站通过从 https://example.com/?author={id} 重定向到 https://example.com/author/{用户名}/ 获取用户名,为网站安全降低风险有所帮助。

分享:

留下评论