我创建了一个论坛,人们可以在这里发送问题并获得答案。因此,当用户以我创建的表单回答问题时,我会将问题的id发送到另一个php文件,以将答案存储在正确的位置,如下所示。
<input type="text" value="<?php echo $id_of_question;?>" style="display:none;"/>
但我认为这不是更安全的方法,或者应该有更好的方法。所以,我的问题是我的方法是好还是安全?我怎样才能做得更好?我认为我上面所做的是懒惰的方式:)感谢
它没有错,但使用hidden
:
<input type="hidden" name="question_id" value="<?php echo $id_of_question;?>" />
input type="hidden"
更有意义,但就安全性而言,这并没有什么实际的区别。
虽然用户可以更改字段的值,但您只需要确保提交的值是合理的。
即在最基本的层面上,它是针对存在的问题。
如果你有更复杂的要求(例如,一些问题可能是封闭的,不接受新的答案),那么你需要改变问题也是开放的。
无法强制浏览器提交特定值。必须在服务器上强制执行所有安全措施。
只要您在另一端检查值,就没有安全问题。我至少会检查另一端的值是否是int,比如is_int($_GET['id'])
,你也可以进一步检查它是否是一个有效的id,但这对你的DB来说会很昂贵。
这真的不是问题的原因是,无论如何,ID有99%的可能性在你的URL中,所以这不像你泄露任何秘密。
不是text
,而是hidden
:
<input type="hidden" value="<?php echo $id_of_question;?>" />
我认为使用隐藏属性比使用css更好。
<input type="hidden" value="<?php echo $id_of_question;?>" />
我已经在我的网站上使用这个很长时间了。但是也许还有更好的方法。
您也可以使用
<form name="form" action="formSubmitUrl.php?id=<?php echo $id ;?>">
<input type="hidden" name="id" value="<?php echo $id;" />
</form>
并且u可以检查post并获得表单的值。