Bug描述
Emlog注册会员后台可以通过后台评论回复评论的接口doreply伪造Post数据,可以绕过评论审核,直接发布评论到文章下,包含不存在的文章。
Bug影响
中度影响,如果发布违规信息,会有关站风险。
Bug修复
1、修复评论审核,修改路径admin/comment.php文件。
if ($hide == 'y') {
$Comment_Model->showComment($commentId);
$hide = 'n';
}
//下面增加以下语句,大概在101行
$hide = Option::get('ischkcomment') == 'y' && !User::haveEditPermission() ? 'y' : 'n';
2、修复发布评论到不存在的文章,修改include/model/comment_model.php的replyComment函数如下。(判断文章是否存在)
function replyComment($blogId, $pid, $content, $hide) {
$User_Model = new User_Model();
$user_info = $User_Model->getOneUser(UID);
$Log_Model = new Log_Model();
$log_info = $Log_Model->getOneLogForHome($blogId);//获取文章信息
if (!empty($user_info)&&!empty($log_info)) {
$name = addslashes($user_info['name_orig']);
$mail = addslashes($user_info['email']);
$url = addslashes(BLOG_URL);
$ipaddr = getIp();
$utctimestamp = time();
if ($pid != 0) {
$comment = $this->getOneComment($pid);
$content = '@' . addslashes($comment['poster']) . ':' . $content;
}
$this->db->query("INSERT INTO " . DB_PREFIX . "comment (date,poster,gid,comment,mail,url,hide,ip,pid)
VALUES ('$utctimestamp','$name','$blogId','$content','$mail','$url','$hide','$ipaddr','$pid')");
$this->updateCommentNum($blogId);
}
}
注意:以上为临时方案,等待官方修复。
目前有 0 条评论