验证/限制隐藏字段以进行修改

时间:2014-02-14 11:59:54

标签: php html web

问题

我正在开发一个应用程序(在PHP中),其中,我将根据用户以前的条目向用户显示一些派生值的报告,用户将检查是否正确 - 如果正确,则用户可以按< em>保存按钮将其提交到数据库。否则,用户应该能够编辑以前的条目,但他不应该能够更改该报告中的派生值。

为此,我将这些值包含在隐藏的输入字段中,因此普通用户无法更改这些值,但是如果Web开发人员可以检查其浏览器中的元素并更改这些值。

我们可以阻止这类攻击吗?如果是这样,怎么样?

我的想法

我可以创建一个包含所有隐藏字段的字符串,对其进行加密并保存在另一个隐藏字段中 - 在回发后我可以交叉验证实际值和加密值。

这是实现这一目标的正确方法吗?以及如何做到这一点  你觉得怎么样?

2 个答案:

答案 0 :(得分:1)

很难对你要做的事情有所了解,但也许解决方案可能是显示一个表单,其中输入字段被禁用(http://www.w3schools.com/tags/att_input_disabled.asp),然后在页面底部显示,例如这些信息是否正确? ..然后是1个保存选项,还有一个选项为否/编辑。然后执行if(isset($_POST['edit'])) { .. run form again but with input fields not disabled }

只在代码的“编辑”部分中提供SQL更新代码,并为保存部分提供单独的SQL更新代码,只需将值从您抓取它们的位置移动到需要的位置。

希望有所帮助。

答案 1 :(得分:1)

如果有需要填写表单的派生值,但又不想使用隐藏字段 - 我建议使用会根据需要包含这些派生值的会话变量。根据有多少这些形式,以及有多少用户使用它们 - 这个数量的字段(在30s内)通常可以忽略不计......如果你在不需要的时候放弃它们。