纯代码完美解决WordPress管理员登录用户名暴露问题

投稿  龙砚庭 2016-11-04 阅读 184 次 评论 29 条

作为一个Wordpress折腾者,几乎每个人都被一件事所烦扰,那就是暴力破解,这些机器每天不劳其烦地扫了一遍又一遍我们的登录页面,企图测试出我们博客管理员的真实登录名跟密码。但是,如果管理员的登录名暴露在评论区域呢?只要用心人轻轻松松审查一下元素,就能找到登录名,然后进行暴力破解,那事情就麻烦了。

这个问题最先是龙笑天下发现的漏洞,范围几乎涉及全部的Wordpress站点,属于Wordpress官方没有意料到的bug。针对这个漏洞,他提出了解决办法《(全网独家)如何正确的避免你的 WordPress 管理员登录用户名被暴露》,方法也很简单,就是修改Wordpress程序(跟我们的主题没关系),弊端也很显著,就是每次升级Wordpress版本都要自己再修改一次。

接着,boke112提出了另外一种方法,只需要修改自身使用的主题即可,但是依旧有弊端:他的方法只适合知更鸟主题为框架或者类似知更鸟主题结构的主题(如何正确的避免WordPress管理员登录用户名被暴露)。

这里简单说一下他们分享方法的不足:

  • WordPress程序这么多年了,它们的服务团队不可能没有注意到comment_class的问题,所以我觉得能不动它就别去改动;
  • 我用这些方法在自己的自留地跟龙砚庭博客测试了一下,自留地妥妥没问题,龙砚庭博客却感觉加载缓慢了很多,头像等图片的加载变得十分缓慢;

综上得知,改动有风险,修改需谨慎。然后为了解决这个问题,我想了好几个办法来分别测试,以下简单说一下:

1、重新定义get_comment_class函数(失败)

最开始,我的想法是能不能重新定义这个函数,于是将代码扒下来,修改为用户ID输出扔到functions后,发现被警告不能重复声明,然后将函数名自定义,重新测试后得到的结果:不起作用。

2、移除与增加comment_classclass(有bug

既然重新定义函数行不通,于是我又想到了能不能给comment_class新增赋予一个class值,再将原来comment_class里面的comment-author-给过滤移除掉。

结果行得通,妥妥没问题,不过发现有一个明显的问题,那就是depth这个class值无法自动判断输出(原因应该是被过滤掉了,导致无法识别它的后缀值)。

3、巧用判断函数遮掩comment_class(未知)

综上,我是失败而归,但不甘就此放弃,于是想到:既然不能根治,那么就干脆给个管理员【类似if (is_admin())的判断句】可见得了,这样别人就看不到啦。

测试的结果自然是成功了,不过因为不知道class对于SEO等是否有影响,所以我没打算采用。

4、替换comment_class的指定输出(完美解决,并附上代码)

最后嘛,睡前想到了一种可以‘瞒天过海’的取巧手段:众所周知,我们博客运行到一定阶段,有些博客不仅换主题、还会进行博客改版,而博客改版自然会涉及到新旧信息的替换。有些人采取开刀数据库,有些人借用functions函数文件遮掩替换。

所以我的思路也就是来源:批量替换文章内容的文本信息

实现的方法也很简单,只需要将以下代码扔到functions.php函数文件里面,即可完美解决因为comment_class导致管理员登录名泄漏的漏洞:

  1. //替换comment_class暴露的登录名为指定输出值——by 龙砚庭博客(http://loomob.com/)
  2. function lyt_comment_class($lyt){
  3.     $replace = array(
  4.         'comment-author-你的真实登录名' => 'comment-author-新的输出名',
  5.     );
  6.     $lyt = str_replace(array_keys($replace), $replace$lyt);
  7.     return $lyt;
  8. }
  9. add_filter('comment_class', 'lyt_comment_class');

切记将代码里面,该修改的代码修改好(实在不懂怎么修改,就自行审查元素,查看自己博客输出的comment-author-值)。

总结:

这个方案最大的优点就是不会破坏Wordpress结构,也不用担心因为Wordpress版本更新而再次手动去修改任何文件,更不用担心其他主题无法使用教程代码。它既顺从了comment_class的规则,又满足了我们的需求,可以说是目前最完美的处理手段。

另外,Wordpress是一个越折腾越精通的过程,希望更多的人能够分享更多实用的教程出来,这样人才能更加进步!

本文地址:http://boke112.com/3626.html
关注我们:请关注一下我们的微信公众号:扫描二维码,公众号:aiboke112
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为投稿文章,感谢 龙砚庭 的投稿,版权归原作者所有,欢迎分享本文,转载请保留出处!
WordPress免费响应式主题:Nana
CPA教学与引流技巧

发表评论

呲牙憨笑坏笑偷笑色微笑抓狂睡觉酷流汗鼓掌大哭可怜疑问晕惊讶得意尴尬发怒奋斗衰骷髅啤酒吃饭礼物强弱握手OKNO勾引拳头差劲爱你

表情

  1. 海外败
    海外败 【农民】 @回复

    顶一下,感谢分享

  2. 一介小民
    一介小民 【市长】 @回复

    还有个问题是,作者页网址会显示用户名

    • boke112导航
      boke112导航【站长】 @回复

      @一介小民 本站已经分享有具体的解决办法,如把网址显示的用户名改为ID或昵称,具体请看《如何将WordPress作者存档链接中的用户名改为昵称或ID》

  3. 一介小民
    一介小民 【市长】 @回复

    引用了,不错

  4. 泛宝汇博客
    泛宝汇博客 【市长】 @回复

    家里电脑坏了,想折腾都没得折腾了 [衰]

  5. 刘国栋个人博客
    刘国栋个人博客 【村长】 @回复

    我用的是Wordpress自己生成的那一长串密码,我自己都记不住 [尴尬] 不知道安全不

    • boke112导航
      boke112导航【站长】 @回复

      @刘国栋个人博客 如果被知道登录地址和用户名,无论多么强悍的密码都会被暴力破解掉的一天,所以还是尽量隐藏我们的用户名和登录地址吧。

  6. 玉满斋
    玉满斋 【市长】 @回复

    呵呵,我也是来露个脸的! [奋斗] [憨笑]

  7. 明月登楼的博客
    明月登楼的博客 【总理】 @回复

    纯粹是为了露个脸的飘过! [啤酒]

  8. 任务易
    任务易 【农民】 @回复

    不会破坏Wordpress结构,很赞

  9. 管家婆
    管家婆 【镇长】 @回复

    这段代码就是有用

  10. 静静博客
    静静博客 【农民】 @回复

    过来学习下!

  11. 马超金博客
    马超金博客 【村长】 @回复

    不错不错,学习了

  12. 韩娱部落
    韩娱部落 【村长】 @回复

    博主精力真好 [呲牙]

  13. 我爱动感单车网
    我爱动感单车网 【省长】 @回复

    这个在很早以前我就已经尽己所能做了一定处理,究竟处理的怎样?限于水平就不得而知了。

  14. Say哈哈
    Say哈哈 【村长】 @回复

    赞一个,谢谢分享!

  15. 捌零男人
    捌零男人 【镇长】 @回复

    评论模块还是挺折腾的

  16. 雅兮网
    雅兮网 【省长】 @回复

    网络安全 值得重视

  17. 灰狼
    灰狼 【农民】 @回复

    隐藏后台地址就好了,何必这么麻烦呢

    • boke112导航
      boke112导航【站长】 @回复

      @灰狼 隐藏后台地址,对于某些人而已还是能够找到这个地址,就是不懂他们是如何下手的

      • 橘子书
        橘子书 【镇长】 @回复

        @boke112导航 应该是用脚本去暴力破解。机器扫描是避免不了的。

    • 我爱动感单车网
      我爱动感单车网 【省长】 @回复

      @灰狼 隐藏后台地址?这个是必须的。再有登陆密码也必须配套,尽可能设置的复杂些才相得益彰!

  18. 爱时尚
    爱时尚 【市长】 @回复

    好不容易抢了次沙发啊 [坏笑]

  19. 苍蓝公爵
    苍蓝公爵 【镇长】 @回复

    没事折腾折腾博客,其乐无穷啊!