前提:今天早上因为一片文章问题被人留言提醒而且直接为已审核状态展示出来了,因为本站做了防垃圾评论所以必须有审核通过的留言或评论才会直接显示,如果第一次留言或评论则不展示进入待审核状态,仔细查看发现该留言冒用了管理员的昵称和邮箱地址,所以被系统判定为已有审核通过留言被直接放行了,之前也没考虑过这个问题,可能自己意识里也没有想过会有坏人利用这个漏洞吧,但是中午吃饭想想其实问题也挺严重了,如果一旦这个漏洞被垃圾评论利用岂不是后果挺严重的,于是饭后百度了下发现这个这个问题历史悠久,最早可以追溯到2010年,而且解决办法大同小异都是在主题模板函数functions.php中加入判定代码,我这里参照的是(雅兮网 https://www.yaxi.net/2016-12-23/1203.html)的方法进行修改的。
具体方法:我们只需要配置一段代码就可以轻松让冒充管理员的人无法提交评论,将如下代码放入主题模板函数functions.php里。
//禁止冒充管理员评论 function usercheck($incoming_comment) { $isSpam = 0; if (trim($incoming_comment['comment_author']) == '管理员昵称') $isSpam = 1; if (trim($incoming_comment['comment_author_email']) == '管理员邮箱') $isSpam = 1; if(!$isSpam) return $incoming_comment; err('你咋不上天呢?还敢冒充管理员!'); } if(!is_user_logged_in()) add_filter( 'preprocess_comment', 'usercheck' );
解决请将代码中昵称和邮箱地址更换为你的站点管理员信息即可,如有能力可以在主题后台写入管理员信息选项,然后在上面代码中调取,不赘述!配置后,非管理员登陆状态下使用管理员名称或邮箱都会有错误提示,如下图!
代码仅仅是在用户评论的时候进行一次判断,并不请求数据库,所以对资源的消耗是有限的,是一段非常不错的代码。此后管理员进行评论就必须要登陆才可,这样在一定程度上提高了网站安全。