通过添加哈希来防止查询字符串操作?

2023-12-28

为了保护 Web 应用程序免受查询字符串操作的影响,我正在考虑向每个 url 添加一个查询字符串参数,该参数存储所有其他查询字符串参数和值的 SHA1 哈希值,然后根据每个请求的哈希值进行验证。

此方法是否提供强大的保护以防止用户操纵查询字符串值?这样做还有其他缺点/副作用吗?

我并不特别担心这个私人网络应用程序的“丑陋”网址。 URL 仍将是“可添加书签的”,因为对于相同的查询字符串参数,哈希值始终相同。

这是一个 ASP.NET 应用程序。


我不确定这是否提供任何形式的安全性。如果中间人攻击者想要更改参数,他们所要做的就是更改查询字符串并重新计算 SHA-1 哈希并将该请求发送到服务器。

例如,浏览器发送的 URL 可能是:

如果攻击者拦截此内容,他们可以通过以下方式对其进行编辑:

实际上,这可以归结为这样一个事实:您只能像信任参数本身一样信任哈希值。

解决此问题的一种方法是,如果用户拥有只有他们和服务器知道的密码,那么攻击者在更改参数时将无法重新计算哈希值。例如:

但不要将密码作为 URL 中的参数之一:)

值得注意的是,这并不是验证两方之间传递的消息完整性的最先进技术。今天使用的是一种基于哈希的消息认证码(HMAC)算法,该算法在HMAC http://en.wikipedia.org/wiki/HMAC,并且最终在RFC2104 https://www.rfc-editor.org/rfc/rfc2104 and FIPS 酒吧 198-1 http://csrc.nist.gov/publications/fips/fips198-1/FIPS-198-1_final.pdf.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过添加哈希来防止查询字符串操作? 的相关文章

随机推荐