0

所以我正在使用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 action id 手动更改为 25 时:

<form action="http://localhost/post/25" method="post" accept-charset="utf-8">

并提交-> 它将评论提交到第 25 个帖子,而不是第 26 个帖子......那么我怎样才能像这样保护我的表单标签呢?

4

2 回答 2

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)

现在你建议我阅读另一篇文章,这是第 31 篇文章,我会点击一个链接

本地主机/post/31

如果一个知识渊博的用户在第 30 个帖子上并决定将 30 更改为 31 怎么办?那么您如何知道他们是否点击了您提供的链接或自己更改了值?(可以根据我听到的内容解决 HTTP 引用者)。

我只能说检查他们是否有权在该特定帖子上发帖,否则就让他们去做。我认为stackoverflow也做同样的事情。检查帖子是否存在以及用户是否有权对该帖子发表评论。然后让他们去做,不要担心他们从一个帖子提交评论到另一个帖子试图成为黑客。那不是黑客,那是胡闹。

编辑: 如果您有权限并且帖子存在,那么对于甚至不是安全问题的事情要做很多工作。我只是检查权限(可能有点复杂)和帖子的存在。

于 2013-09-15T09:45:44.420 回答
0

这是服务器端问题。您必须防止代码以这种方式在服务器中发布。您可能可以为此使用 HTTP Post 方法。另一个技巧可能是以某种方式对帖子 ID 进行加密,或者在每次需要访问并临时使用每个帖子时为每个帖子生成一个唯一 ID。

于 2013-09-15T09:47:10.963 回答