gpt4 book ai didi

php - 防止隐藏的输入被更改

转载 作者:太空狗 更新时间:2023-10-29 13:55:43 24 4
gpt4 key购买 nike

这让我压力很大..我有一个隐藏的输入:

<input type="hidden" value="North Miami" name="city">

在提交表单之前,我通过 javascript 使用有效的城市名称填充隐藏的输入。假设有人想提交 Banana 而不是城市名称。罪魁祸首可以通过 Firebug 等 DOM 检查器轻松更改输入值。

如何确保隐藏的输入不被篡改?我已经在针对攻击验证输入,但只要我接受字母字符,就可以提交任何内容,因此 banana...

编辑:我指的是一般的隐藏输入,而不仅仅是城市名称。由脚本填充的任何值以及必须原样提交的值。

最佳答案

一些想法:

  1. 仅限服务器端。最简单的方法是使用 session 变量(如 $_SESSION),这样所有数据都保存在服务器端,但管理它并保持用户可能打开的单独选项卡可以获得有点棘手。此选项可防止用户查看或编辑信息。

  2. 让客户端携带一个加密的 blob。获取所有“临时但 protected ”的数据,以某种方式将其组合(例如 JSON),然后使用只有服务器知道的 key 加密*整个数据。 Base64 结果并将其放入隐藏字段值中。 (请注意,对于高安全性应用程序,您还需要在此过程中使用 HMAC,以验证密文未被修改。)此选项还可以防止用户查看或编辑信息,但可以更轻松地处理一个用户打开多个选项卡的情况。

  3. 仍然使用不太 secret 的隐藏输入字段,但添加了防篡改机制。因此,在生成页面时,获取所有现有的“ protected ”变量,以某种方式将它们与服务器端 secret 值组合,然后对它们进行散列 [更正:HMAC]。将散列存储在它自己的隐藏字段中。然后在用户提交后,您重复该过程并检查哈希是否匹配。如果没有,则在安全违规页面上出现所有错误。

*与所有密码学一样,以“正确”的方式执行此操作可能很棘手,并且在很大程度上取决于您如何加密/验证。在密码和密码模式等方面有很多陷阱。

最后,请记住,防止人们修改它并不意味着用户不能复制所有内容并在以后或在另一个帐户下重新使用它,除非您采取措施包括“时间戳”等。

关于php - 防止隐藏的输入被更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6312779/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com