来源:自学PHP网 时间:2015-04-16 23:14 作者: 阅读:次
[导读] emlog官方的反垃圾评论插件(感觉70%以上的人在用,因为内核代码里没有垃圾评论的处理,要处理垃圾评论只有用插件),未对某处xss进行过滤导致直接打管理员cookie。代码如下:?phpwhi...
emlog官方的“反垃圾评论”插件(感觉70%以上的人在用,因为内核代码里没有垃圾评论的处理,要处理垃圾评论只有用插件),未对某处xss进行过滤导致直接打管理员cookie。
代码如下:
<?php while($res = $DB->fetch_array($query)): $ishide = $res['hide']=='y'?'<font color="red">[待审]</font>':''; $mail = !empty($res['mail']) ? "({$res['mail']})" : ''; $ip = !empty($res['ip']) ? "<br />IP:<a href=\"./plugin.php?plugin=anti_spam_comment&advance=true&ip={$res['ip']}\">{$res['ip']}</a>" : ''; $url = !empty($res['url']) ? "({$res['url']})" : ''; $res['content'] = str_replace('<br>',' ',$res['comment']); $sub_content = subString($res['content'], 0, 50); $res['title'] = subString($res['title'], 0, 42); ?> <tr> <td><input type="checkbox" value="<?php echo $res['cid']; ?>" name="com[]" class="ids" /></td> <td><a href="./plugin.php?plugin=anti_spam_comment&advance=true&act=edit&cid=<?php echo $res['cid']; ?>" title="<?php echo $res['content']; ?>"><?php echo $sub_content; ?></a> <?php echo $ishide; ?> <br /><?php echo smartDate($res['date']); ?> <span style="display:none; margin-left:8px;"> <a href="javascript: asc_confirm(<?php echo $res['cid']; ?>, 'name');">屏蔽内容</a> <a href="javascript: asc_confirm(<?php echo $res['cid']; ?>, 'url');">删除地址</a> </span> </td> <td><a href="./plugin.php?plugin=anti_spam_comment&advance=true&poster=<?php echo urlencode($res['poster']);?>"><?php echo htmlspecialchars($res['poster']);?></a> <?php echo $url; ?> <?php echo $ip;?> <?php echo $mail;?></td> <td><a href="./plugin.php?plugin=anti_spam_comment&advance=true&gid=<?php echo $res['gid']; ?>"><?php echo $res['title']; ?></a></td> </tr> <?php endwhile; ?>
数据库中取出评论内容$res['comment'],$sub_content取前50个字符就直接输出了。而且插入数据库时也未进行数据处理:
直接导致执行javascript:
可打cookie:
使用该cookie可以直接登录后台。
修复方案:
echo htmlspecialchars($sub_content);
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com