gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 10:46:35 25 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

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

http://www.example.com/addUser.html?parameterA=foo&hash=SHA1("parameterA=foo")

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

http://www.example.com/adduser.html?parameterA=bar&hash=SHA1("parameterA=bar")

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

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

http://www.example.com/addUser.html?parameterA=foo&hash=SHA1("parameterA=foo"+"theuserpassword")

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

值得注意的是,这并不是验证两方之间传递的消息完整性的最先进技术。今天使用的是一种基于哈希的消息验证代码 (HMAC) 算法,在 HMAC 中有很好的描述。 ,并最终在RFC2104中和 FIPS Pub 198-1 .

关于asp.net - 通过添加哈希来防止查询字符串操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1061134/

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