我使用CodeIgniter、PHP和PDO for MySQL从头开始开发了一个公告板。现在我正在清理它并测试缺陷/安全漏洞。我遇到了一个小缺陷,我无法想出一个坚实的解决方案。用户可以用与任何论坛帖子都不相关的随机评论淹没我的数据库。为了更好地描述这个问题,让我简要解释一下我的系统。
当您登录查看帖子时,通过
当您查看帖子时,URL方案看起来像这样;
我尝试针对引用URL进行测试,但情况类似。我想出了几个解决方案,但不知道它们是否是理想的?强制使用JavaScript、将
当您登录查看帖子时,通过
post_id
从数据库中获取帖子对象以及任何相关评论。您可以选择阅读帖子并留下自己的评论。底部的评论表单有一个名为pid
的隐藏字段,它存储我们正在查看的当前帖子的ID,以便在单击提交按钮时保持状态。然而,这也有一个缺点。在提交之前,隐藏字段可以被修改为任何整数值,正如您可能猜到的那样。当您查看帖子时,URL方案看起来像这样;
http://www.domain.com/forum/post/22
提交后,您将被重定向到一个类似于以下内容的URL;
http://www.domain.com/forum/create_comment
...在那里,评论信息将与关联的用户ID和帖子ID一起插入到数据库中。我尝试针对引用URL进行测试,但情况类似。我想出了几个解决方案,但不知道它们是否是理想的?强制使用JavaScript、将
pid
存储到会话中,和/或混淆隐藏在字段中的信息。