所以我使用的是codeigniter,我已经提交了表单来提交评论。
echo form_open(current_url()); // http://localhost/post/26
$textarea = array(
'id' => 'comment_area',
'name' => 'comment',
'value' => set_value('comment'),
'cols' => 35,
'rows' => 5
);
echo form_textarea($textarea);
echo '<br />';
echo form_submit('submit', 'Comment');
echo form_close();
所以你怎么猜这个产生:<form action="http://localhost/post/26" method="post" accept-charset="utf-8">
但是有问题,当我使用firebug动作id手动更改为25:
<form action="http://localhost/post/25" method="post" accept-charset="utf-8">
并提交 - &gt;它提交评论到第25个帖子,而不是第26个...所以我怎么能像这样保护我的表格标签?
答案 0 :(得分:1)
如果我理解你的问题,我会说不要为这样的事情烦恼。如果他们有权限而不是让他们这样做。
这里有一点解释(场景)为什么你可能不想这样做。
让我们根据您提供的内容,生成的密钥是30,因此您有一个表单,例如
< form action="http://localhost/post/30" method="post" accept-charset="utf-8">
假设您现在创建另一个成为31的帖子,因此您现在还有一个表单,例如
< form action="http://localhost/post/31" method="post" accept-charset="utf-8">
现在假设我是访问并阅读第30篇帖子的用户,我会点击
localhost/post/30 (http of course)
的链接
现在你建议我阅读另一篇第31篇帖子,我会点击一个链接
localhost/post/31
如果知识渊博的用户在第30个帖子并且决定更改为30到31,该怎么办?那你怎么知道他们点击你提供的链接还是自己更改了价值? (HTTP引用可以从我听到的内容中解决)。
我只能说是检查他们是否有权在该特定帖子上发帖,否则就让他们这样做。我认为stackoverflow也做同样的事情。检查帖子是否存在且用户是否有权在该帖子上发表评论。然后让他们这样做,不要担心他们从一个帖子提交评论到另一个试图成为黑客的帖子。那不是黑客,那就是鬼混。
修改强> 如果你有权限并且帖子存在,那么对于甚至不是安全问题的事情都要做很多工作。我只是检查许可(可能有点复杂)和帖子的存在。
答案 1 :(得分:0)
这是服务器端问题。您必须阻止代码以这种方式在服务器中发布。 您可以使用HTTP Post方法。另一个技巧可能是以某种方式加密post id,或者每次需要访问时都为每个帖子生成一个唯一的id并暂时使用它。