|
|
1
9
我不确定这是否提供了任何安全保障。如果中间人攻击者想要更改参数,他们所要做的就是更改查询字符串并重新计算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 . |
|
|
2
2
在global.asax文件中
|
|
|
3
1
|
|
|
4
0
我认为添加一个包含所有其他参数哈希值的参数是个好主意。它从根本上防止了查询字符串的操作,但你必须考虑这个问题,即在应用程序的其他页面中使用这些URL,将这些URL发送给公众或以任何打印方式使用它们。如果这些页面不是动态创建的,或者你只需要手动添加这些网址,你需要有一种很好的订购方式,并特别地将它们放在手边。 我没有看到任何其他问题。有人可能会告诉你哈希值是可以计算的,但你可以按照参数的顺序来获得不同的哈希值,这很难猜测。 |
|
|
5
0
这样做的一个主要问题是,javascript必须进行客户端SHA计算才能链接到页面,这当然取决于你使用JS的程度,但认为get参数可能包括pageNo=1,并且有一个“跳转到页面”输入框,如果你添加哈希值,这将变得困难,这应该是合理的。你可以在会话(服务器端)中存储任何你真的不想被操纵的东西。 |
|
|
AlwaysneedsHelp · 如何减少此处使用的内存量? 2 年前 |
|
|
snake123 · 滚动到不同页面的锚点,URL中没有# 2 年前 |
|
|
Jan · 密码salt是否应存储在数据库中 2 年前 |
|
|
birb · RFC-6238 TOTP实现与示例不匹配 2 年前 |
|
|
AishaWho · 请解释res=id^(id>>>32) 2 年前 |
|
|
landings · 如何散列整数的环形缓冲区? 3 年前 |