emlog isLogCanComment函数小BUG(MySqli)

摘要

今天论坛有人说评论有

今天论坛有人说评论有BUG,我看了一下,无意中注意到isLogCanComment函数。

 function isLogCanComment($blogId) { if (Option::get('iscomment') == 'n') { return false; } $query = $this->db->query("SELECT allow_remark FROM ".DB_PREFIX."blog WHERE gid=$blogId"); $show_remark = $this->db->fetch_array($query); if ($show_remark['allow_remark'] == 'n' || $show_remark === false) { return false; }else { return true; } }


以上是isLogCanComment函数的代码,数据库(连接方式使用mysqli)查询$show_remark的值应该是空值NULL,所以不能用===false。

注意:数据库连接方式使用mysqli就会出现这个问题

影响就是POST伪造gid,可以把评论发布到不存在文章gid下,影响应该不大。

解决方法:

修改emlog目录下include\model\comment_model.php的isLogCanComment函数的代码

 if ($show_remark['allow_remark'] == 'n' || $show_remark === false) {改成 if ($show_remark['allow_remark'] == 'n' || $show_remark == false) {或者 if ($show_remark['allow_remark'] == 'n' || $show_remark === NULL) {

文章转自:星知苑,欢迎大家投稿: http://likinming.com/post-87.html

发表评论

注意:本博客开启缓存,你的评论一般2小时后才能看到,如是广告,评论将无法显示!

目前评论:1 条

  1. avatar 王语双
    回复 2014-12-19 17:58  沙发

    例行路过,博主周末好!不懂,也照顶。