LXTX
龙笑天龙笑天  2016-11-02 06:31 来源:龙笑天下 隐藏边栏 |   13 条评论  1,460 
文章评分 118 次,平均分 4.9

昨晚在研究评论结构时,网站右键查看源代码,无意间发现自己的管理员用户名被暴露了...

图 1 评论中暴露登录用户名

图 1 评论中暴露登录用户名

如上图,在博主的评论的 class 里看到的 test10 是我本地的测试网站的管理员的用户名!另附搭建本地测试环境的方法:

使用 phpStudy 2018 创建本地 PHP 测试环境及安装运行 wordpress 的方法
对学习 PHP 的新手来说,WINDOWS 下 PHP 环境配置是一件很困难的事,就是老手也是一件烦琐的事。因此,无论你是新手还是老手,phpStudy 2018 都是一个不错的选择,该程序集成 Apac...
阅读:2.52k   评论:40   喜欢:7   评分:
将 WordPress 作者存档链接中的用户名改为昵称或 ID(修复中文昵称 404)
本文简要的介绍“隐藏管理员用户名”的一个方法,就是将作者存档链接中的用户名改为昵称或 ID~...
阅读:784   评论:23   喜欢:12   评分:

网站已经使用了上面这篇文章里的隐藏存档链接中管理员用户名的方法,没想到管理员用户名还是以另一种方式暴露了... 不过还好,非常隐蔽~~然后查看了下其它一些知名度高的 wordpress 的博客,他们也全部中招了(话说,各位博主的管理员登录用户名真的好复杂啊!)!看来是 wordpress 的通病了!大家赶紧自查下哦~

修复方法

方法 1:直接修改 wordpress 程序

① 然后,查了下代码,查到了这个函数comment_class(),进一步发现是被这个函数get_comment_class()(大约在 wp-includes\comment-template.php 的 419 行)暴露管理员的登录用户名... 该函数内容如下:

我们的管理员用户名正是被其中的第 14 行暴露的... 在此,我们只需将这一行中的$user->user_nicename改为$user->user_id即可安全的隐藏管理员的登录名了~ 也隐藏了注册用户的登录用户名了!取而代之显示的是注册用户(包括管理员)的 ID。从此再也不用担心网页中会暴露诸位站长的登录用户名了~

② 11 月 02 日经过友链龙砚庭博主的提醒,发现用户页面也有博主登录用户名,如下图:

图 2 用户页面中也暴露登录用户名

图 2 用户页面中也暴露登录用户名

然后查到了这个函数body_class(),进一步发现是被这个函数get_body_class()(大约在 wp-includes\post-template.php 的 634 行)暴露管理员的登录用户名... 该函数部分内容如下:

其中该函数的第 5 行也暴露了博主的登录名,将这一行删掉或注释掉即可成功解决~

当然,利用好body_class()这个函数,也可以得到一些很好的效果:

WordPress 实现中英文数字之间自动加空格排版
通常来说中文与英文、中文和数字之间加上空格的排版会更加好看,但是如果让我们在编辑文章的时候人工添加,感觉非常繁琐和让人厌烦,所以今天龙笑天下就来跟大家介绍一下 WordPress 如何实现中...
阅读:380   评论:2   喜欢:16   评分:

友情提示:此方法是直接修改的 wordpress 的源程序,所以每次更新 wordpress 程序都得进行这样的修改。希望高手能提供更好的方法!

方法 2:过滤掉 "comment-author-" 和 "author-"

11 月 04 日经过张戈的提醒和龙砚庭博主文章的提示,得到了一个基本完美的解决方案:也就是将comment_class()函数里输出的 comment-author-test10 这个 class 去掉,也将body_class()函数里输出的 author-test10 这个类似的 class 去掉。因为这个是通过 functions.php 来解决的,所以不用担心 wordpress 程序升级的问题。方法是,将以下代码加入 functions.php 中,即可完事!

comment_class()body_class()过滤的结果分别是:

20161122:才发现其实老外早在 2010 年就发现了这个漏洞...

代码改自:《Small Security Hole in WordPress Comments

PS:方法 2 的两段代码二选一哈~ 效果一样!

方法 3:改为输出用户 ID 或用户昵称

11 月 18 日发现inlojv的这个方法也不错,但在改为输出昵称的时候有点错误,对此,我已经优化好了,请放心使用:

注:注释的两行代码为替换成昵称,不了解可以不理会~~

我现在的策略是,非管理员显示的是用户的 ID,管理员的话,则显示的是......千万不要去查看哦~ 我现在采用的是方法 2,直接过滤掉了~

延深阅读

我们在上面看到了这个关键字user_nicename然而通过百度搜索,找到的准确的相关信息聊聊无几... 还是通过科学上网用谷歌搜索是找到了相关的文章:《users - user_login vs. user_nicename - WordPress Development Stack Exchange》。内容如下图:

图 3 user_login 与 user_nicename 的区别

图 3 user_login 与 user_nicename 的区别

(英语蹩脚,请见谅~)大意是说,user_login 是登录名,用来登录的;user_nicename 是在作者存档链接中显示的名称。通常,如果你的登录名中没有特殊的字符,则 user_nicename 和 user_login 登录名是一样的;但,如果你是使用电子邮箱注册的 wordpress,也就是说你的登录名是邮箱地址的话,则 user_nicename 和 user_login 是不同的!

比如,如果你的 user_login 登录名是 user@example.com,那么你的 user_nicename 则是 userexample-com。

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

龙笑天
龙笑天 关注:14    粉丝:8 最后编辑于:2017-12-25
互助分享,互联网本该如此!
×

感谢您对龙笑天的支持,么么哒~

支付宝打赏 龙笑天
请扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

龙笑天下 - 分享悲伤;共享快乐

发表评论

表情 贴图 链接 私密 格式 签到

最赞评论
  1. 明月登楼的博客
    明月登楼的博客 评论达人 LV.3 来自天朝的朋友 谷歌浏览器 Windows 10 河南省南阳市 电信

    不错,能隐藏还是尽量隐藏!不过,每次更新都会复位这个有点不足,我认为管理员帐号可以起个非常意外的是最好的方案了!

  2. 橘子书
    橘子书 评论达人 LV.2 来自天朝的朋友 QQ浏览器 Windows 10 福建省漳州市 电信

    感谢告知,已找到更好的处理方法: 传送门

  3. boke112导航
    boke112导航 评论达人 LV.3 来自天朝的朋友 谷歌浏览器 Windows 7 广西南宁市 电信

    新方法不错,等会就更新到 boke112 导航去,谢谢分享

  1. 广
    广告任务网 来自天朝的朋友 搜狗浏览器 Windows 7 山东省 联通

    很不错的样子⊙0⊙

    6楼 2016-11-07 10:31
    0 0 回复
  2. boke112导航
    boke112导航 评论达人 LV.3 来自天朝的朋友 谷歌浏览器 Windows 7 广西南宁市 电信

    新方法不错,等会就更新到 boke112 导航去,谢谢分享

    5楼 2016-11-04 22:15
    3 0 回复
  3. Koolight
    Koolight 评论达人 LV.3 来自天朝的朋友 Safari浏览器  Android 4.4.2 PE-CL00 Build/HuaweiPE-CL00 湖北省 移动

    你们已奔小康,我还在温饱线上。看不懂你们有才人玩的!

    4楼 2016-11-03 23:46
    0 0 回复
  4. 橘子书
    橘子书 评论达人 LV.2 来自天朝的朋友 QQ浏览器 Windows 10 福建省漳州市 电信

    感谢告知,已找到更好的处理方法: 传送门

    地板 2016-11-02 17:58
    6 0 回复
  5. 明月登楼的博客
    明月登楼的博客 评论达人 LV.3 来自天朝的朋友 谷歌浏览器 Windows 10 河南省南阳市 电信

    不错,能隐藏还是尽量隐藏!不过,每次更新都会复位这个有点不足,我认为管理员帐号可以起个非常意外的是最好的方案了!

    板凳 2016-11-02 12:24
    7 0 回复
  6. boke112导航
    boke112导航 评论达人 LV.3 来自天朝的朋友 谷歌浏览器 Windows XP 广西南宁市 电信

    谢谢博主分享,已修复这个问题

    沙发 2016-11-02 10:33
    2 0 回复
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

切换登录

注册

您也可以使用第三方帐号一键快捷注册

扫一扫二维码分享