0

我创建了一个论坛,人们可以在这里发送问题并获得答案。这样,当用户以我创建的表单回答问题时,我会将问题的 id 发送到另一个 php 文件,以将答案存储到正确的位置,如下所示。

<input type="text" value="<?php echo $id_of_question;?>" style="display:none;"/>

但我认为这不是更安全的方法,或者应该有更好的方法来做到这一点。所以,我的问题是我的方法是好的还是安全的?我怎样才能做得更好?我认为我上面所做的是懒惰的方式:)谢谢

4

6 回答 6

4

它没有任何问题,但请hidden改用:

<input type="hidden" name="question_id" value="<?php echo $id_of_question;?>" />
于 2012-09-06T11:26:41.820 回答
3

Aninput type="hidden"会更有意义,但就安全性而言,这没有实际区别。

虽然用户可以更改字段的值,但您只需确保提交的值是合理的。

即在最基本的层面上,它是针对存在的问题的。

如果您有更复杂的要求(例如,某些问题可能已关闭并且不接受新答案),那么您需要更改问题也已打开。

没有办法强制浏览器提交特定值。您的所有安全措施都必须在服务器上实施。

于 2012-09-06T11:26:58.233 回答
1

只要您检查另一侧的值,就没有安全问题。我至少会检查另一侧的值是否为 int,例如is_int($_GET['id']),您可以进一步检查它是否是有效的 id,但这对您的数据库来说会很昂贵。

这真的不是问题的原因是,无论如何,该 ID 有 99% 的可能性在您的 URL 中,所以这不像您泄露任何秘密。

于 2012-09-06T11:37:13.743 回答
0

不是text但是hidden

<input type="hidden" value="<?php echo $id_of_question;?>" />
于 2012-09-06T11:27:06.010 回答
0

好吧,我认为使用隐藏属性而不是 css 更好。

<input type="hidden" value="<?php echo $id_of_question;?>" />

我在我的网站上使用这个已经很长时间了。但是,是的,可能有一些更好的方法。

于 2012-09-06T11:27:28.797 回答
0

你也可以用这个

<form name="form" action="formSubmitUrl.php?id=<?php echo $id ;?>">
<input type="hidden" name="id" value="<?php echo $id;" />
</form>

你可以检查帖子并获取表格的价值..

于 2012-09-06T11:31:55.950 回答