相比密码,用户名并不是什么秘密,通常不需要保密,因为即使知道了登入用户名,没有密码,也不能登入 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/{用户名}/ 获取用户名,为网站安全降低风险有所帮助。