在我的网络应用程序的一个表单中,出于安全原因,我需要保护一个隐藏字段以防止被篡改。我正在尝试提出一个解决方案,通过该解决方案我可以检测隐藏字段的值是否已更改,并做出适当的反应(即使用通用的“出现问题,请重试”错误消息)。该解决方案应该足够安全,以至于暴力攻击是不可行的。我有一个我认为可行的基本解决方案,但我不是安全专家,我可能在这里完全遗漏了一些东西。
我的想法是渲染两个隐藏的输入:一个名为“important_value”,包含我需要保护的值,另一个名为“important_value_hash”,其中包含与恒定长随机字符串连接的重要值的 SHA 哈希(即相同的字符串将每次都使用)。提交表单时,服务器会重新计算 SHA 哈希,并与提交的重要值哈希值进行比较。如果它们不一样,那么important_value 已经被篡改了。
我还可以将附加值与 SHA 的输入字符串(可能是用户的 IP 地址?)连接起来,但我不知道这是否真的让我受益匪浅。
这会安全吗?任何人都知道它是如何被破坏的,以及可以/应该做些什么来改进它?
谢谢!