在我的网络应用程序的一种形式上,我有一个隐藏字段,出于安全原因,我需要保护它免遭篡改。我正在尝试提出一个解决方案,通过该解决方案,我可以检测隐藏字段的值是否已更改,并做出适当的反应(即使用通用的“出现问题,请重试”错误消息)。该解决方案应该足够安全,以至于暴力攻击是不可行的。我有一个我认为可行的基本解决方案,但我不是安全专家,我可能在这里完全遗漏了一些东西。
我的想法是渲染两个隐藏输入:一个名为“important_value”,包含我需要保护的值,另一个名为“important_value_hash”,包含与常量长随机字符串连接的重要值的 SHA 哈希值(即相同的字符串将每次都会用到)。提交表单后,服务器将重新计算 SHA 哈希值,并与提交的 important_value_hash 值进行比较。如果不相同,则表明 important_value 已被篡改。
我还可以将其他值与 SHA 的输入字符串(也许是用户的 IP 地址?)连接起来,但我不知道这是否真的能给我带来任何好处。
这会安全吗?任何人都知道它是如何被破坏的,以及可以/应该采取什么措施来改进它?
Thanks!
It would be better to store the hash on the server-side. It is conceivable that the attacker can change the value and generate his/her own SHA-1 hash and add the random string (they can easily figure this out from accessing the page repeatedly). If the hash is on the server-side (maybe in some sort of cache), you can recalculate the hash and check it to make sure that the value wasn't tampered with in any way.
EDIT
我读错了关于随机字符串(常量盐)的问题。但我想原来的观点仍然成立。攻击者可以建立与隐藏值相对应的哈希值列表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)