通过检查元素更改隐藏字段的值会更改服务器端的实际值

Posted

技术标签:

【中文标题】通过检查元素更改隐藏字段的值会更改服务器端的实际值【英文标题】:Changing value of hidden field through inspect element changes actual value in server side 【发布时间】:2013-10-24 13:26:55 【问题描述】:

我有一个奇怪的问题。我将一些数据存储在隐藏字段中。当我通过检查元素更改隐藏字段的值时,它也会在服务器端更改。

具有实际值的隐藏字段

值通过检查元素改变

服务器端的结果

我希望用户不要更改隐藏值或用户更改的值不应影响实际值。 谁能帮我解决这个问题?

【问题讨论】:

“在服务器端”是什么意思? 我认为你误会了。您检查的是在客户端。知道为什么要将数据存储在不希望用户更改的隐藏字段中会更有趣。也许您可以找到更好的选择。 如果你计算这个值(84),你需要在服务器端重新计算以确保它适合。你永远不应该相信自己的表格。总是存在被用户更改的风险。如果这是价格,请提交产品的 ID 并重新计算。不管你如何在客户端得到这个号码,你也可以在服务器端得到它 谢谢。非常有用。 【参考方案1】:

无法在控制台中阻止某人修改 DOM。

在对它们进行任何操作之前,您需要验证发送到服务器的值在服务器端是否有效。

如果您有一些不希望任何人修改的数据,则需要有某种加密方法,或者根本不在客户端显示它。

【讨论】:

谢谢.. 我们通过检查元素更改了标签、按钮等 asp 控件的值,但在服务器端我们没有得到更改的值。所以我的问题是,标签和隐藏字段有什么区别?它是如何工作的? @Sudha 标签和按钮没有在表单中提交的值。隐藏的表单域可以。它们被发布到您的服务器端代码中。 感谢您的解释。这对我帮助很大。【参考方案2】:

知识渊博的用户可以随时更改隐藏的表单值,并将它们提交给您的代码。

如果您需要存储他们无法更改的用户数据,那么您需要将它们存储在服务器端(例如在数据库中),而不是在客户端。

【讨论】:

以上是关于通过检查元素更改隐藏字段的值会更改服务器端的实际值的主要内容,如果未能解决你的问题,请参考以下文章

ReactJs:根据选择值显示或隐藏输入字段

识别服务器端客户端浏览器中的内容更改

由于某种原因,向 TextInput 添加值会更改字体粗细

检查 ui 元素的值是不是已更改

用[(NgModel)]更改绑定的Angular表中的值会影响其他字段

如何保护隐藏字段数据不被更改