Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何不允许人们手动更改html表单代码并提交_Php_Forms_Security_Codeigniter - Fatal编程技术网

Php 如何不允许人们手动更改html表单代码并提交

Php 如何不允许人们手动更改html表单代码并提交,php,forms,security,codeigniter,Php,Forms,Security,Codeigniter,所以我使用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 );

所以我使用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();
echo form_open(当前url());//http://localhost/post/26
$textarea=数组(
'id'=>'comment_area',
'名称'=>'注释',
'value'=>set_value('comment'),
“cols”=>35,
“行”=>5
);
回音表单_textarea($textarea);
回声“
”; 回送表格提交(“提交”、“评论”); 回声形式_close();
那么您如何猜测这一结果:

但问题是,当我使用firebug操作id手动更改为25时:

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


并提交->它将评论提交到第25篇文章,而不是第26篇。。。那么,我怎样才能像这样保护我的表单标签不受smth的攻击呢?

如果我正确理解了你的问题,我会说,不要为这样的事情而烦恼。如果他们有许可,就让他们做吧

这里有一个小解释(场景)说明您可能不想这样做的原因。

假设根据您提供的内容,生成的键是30,因此您将有一个表单,如

< form action="http://localhost/post/30" method="post" accept-charset="utf-8"> < form action="http://localhost/post/31" method="post" accept-charset="utf-8"> 假设您现在创建了另一个post,它变为31,那么您现在也有了一个表单,例如

< form action="http://localhost/post/30" method="post" accept-charset="utf-8"> < form action="http://localhost/post/31" method="post" accept-charset="utf-8"> 现在假设我是一个来阅读第30篇文章的用户,我会单击一个链接localhost/post/30(当然是http)

localhost/post/30 (http of course) localhost/post/31 现在你建议我读另一篇文章,这是第31篇文章,我会点击localhost/post/31链接

localhost/post/30 (http of course) localhost/post/31 如果一个知识更渊博的用户在第30篇文章中决定将30改为31,该怎么办?那么,您如何知道他们是否单击了您提供的链接或自己更改了值?(根据我所听到的,可以绕过HTTP referer)

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

编辑:
如果你有权限并且帖子存在的话,你可以为一些甚至不是安全问题的东西做很多工作。我只是检查权限(可能有点复杂)和帖子的存在。

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

你不能阻止人们不更改html表单代码。您只需要找到一种方法来确保向您传递正确的数据。这更像是一个设计决策。一般人甚至不会看你的html代码。能搞乱它的人最有可能做你做过的事。:-)您可以在不使用公式的情况下发送HTTP POST请求(例如,使用)。你绝对需要在你这方面进行验证。只需检查当你收到请求时,是否允许用户对给定的帖子发表评论,一切正常。它是如何使用的??HTTP Post请求??