Php 验证/限制要修改的隐藏字段

Php 验证/限制要修改的隐藏字段,php,html,web,Php,Html,Web,问题 我正在开发一个应用程序(在PHP中),在这个应用程序中,我将向用户显示一个基于他之前所做的输入的一些派生值的报告,用户将检查其正确性——如果正确,那么用户可以按Save按钮将其提交到数据库。否则,用户应该能够编辑以前的条目,但不能更改该报告中的派生值 为此,我将这些值包含在一个隐藏的输入字段中,这样普通用户就不能更改这些值,但是如果web开发人员可以在浏览器中检查元素并更改这些值 我们能阻止这种攻击吗?如果是,怎么做 我的想法 我可以创建一个包含所有隐藏字段的字符串,对其进行加密并保存在另

问题

我正在开发一个应用程序(在PHP中),在这个应用程序中,我将向用户显示一个基于他之前所做的输入的一些派生值的报告,用户将检查其正确性——如果正确,那么用户可以按Save按钮将其提交到数据库。否则,用户应该能够编辑以前的条目,但不能更改该报告中的派生值

为此,我将这些值包含在一个隐藏的输入字段中,这样普通用户就不能更改这些值,但是如果web开发人员可以在浏览器中检查元素并更改这些值

我们能阻止这种攻击吗?如果是,怎么做

我的想法

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

这是实现这一目标的正确方法吗?如何做到这一点
你怎么看?

很难对你正在尝试做的事情有一个好的了解,但也许一个解决方案是显示一个表单,禁用输入字段(),然后在页面底部显示,例如,此信息正确吗。。然后是一个保存选项,一个否/编辑选项。然后执行
if(isset($\u POST['edit']){..再次运行表单,但输入字段未禁用}

只有在代码的“编辑”部分有SQL更新代码,在“保存”部分有单独的SQL更新代码,该代码只是将值从您要获取它们的位置移动到需要的位置


希望这会有所帮助。

如果您需要填写表单中的派生值,但不想使用隐藏字段,我建议您根据需要使用包含这些派生值的会话变量。取决于这些表单的数量,以及将有多少用户使用它们-对于这些字段的数量(在30秒内),开销通常可以忽略不计。。。当然,如果您在不需要时丢弃它们。

您想过使用会话变量而不是表单字段吗?@wribit谢谢,我不这么认为,好主意顺便问一下,如果我需要传递大约30个值,会不会对服务器存储造成任何问题,这样会更好?或者导致任何开销?如果同时记录多个用户(比如100+),需要相同的会话变量,那么会导致开销-当然。。。但对于您的担忧,我认为这是一个值得冒点风险的解决方案。@wribit只是为了防止用户在两个不同的选项卡中为不同的数据打开相同的表单,然后会话变量将被彼此覆盖如果这是您希望他们能够做的事情-那么会话变量不是答案,很抱歉。假设用户在一个选项卡中打开案例1的数据,那么会话变量将用于此,在另一个选项卡中,他打开案例2的数据,然后打开所有会话变量案例2,无论按哪个表单保存按钮,他都将只保存案例2,我现在明白了——那么我能想到的唯一方法就是像你一样通过隐藏字段——但是要加密它们的内容。你能推荐更好的加密技术吗