We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
攻击者截取到正常请求,并重复请求,当该请求涉及到类如数据库插入等操作时,大量的请求会造成问题。
防止同一个请求被多次请求,保证每次请求的唯一性
https://user-gold-cdn.xitu.io/2018/4/16/162cd376398b884c?imageView2/0/w/1280/h/960/format/webp/ignore-error/1
因为一般攻击者从截取到发送请求会间隔超过60s,所以通过加入时间戳,服务器判断api的时间戳和服务器接到请求时间的时间戳差值是否大于60s,如果大于则判断为重放攻击
服务端第一次在接收到这个nonce的时候做下面行为:
nonce是由客户端根据足够随机的情况生成的,比如 md5(timestamp+rand(0, 1000)); 也可以使用UUID, 它就有一个要求,正常情况下,在短时间内(比如60s)连续生成两个相同nonce的情况几乎为0。
http://a.com/?uid=123×tamp=1480556543&nonce=43f34f33&sign=80b886d71449cb33355d017893720666
这个请求中的uid是我们真正需要传递的有意义的参数,timestamp,nonce,sign都是为了签名和防重放使用。
服务端接到这个请求:
The text was updated successfully, but these errors were encountered:
No branches or pull requests
重放攻击
概念
攻击者截取到正常请求,并重复请求,当该请求涉及到类如数据库插入等操作时,大量的请求会造成问题。
目的
防止同一个请求被多次请求,保证每次请求的唯一性
流程图
https://user-gold-cdn.xitu.io/2018/4/16/162cd376398b884c?imageView2/0/w/1280/h/960/format/webp/ignore-error/1
方案
1.保证请求是在安全时间内发出(如60s)
因为一般攻击者从截取到发送请求会间隔超过60s,所以通过加入时间戳,服务器判断api的时间戳和服务器接到请求时间的时间戳差值是否大于60s,如果大于则判断为重放攻击
2.60s内的请求通过随机数nonce保证
服务端第一次在接收到这个nonce的时候做下面行为:
例子
http://a.com/?uid=123×tamp=1480556543&nonce=43f34f33&sign=80b886d71449cb33355d017893720666
这个请求中的uid是我们真正需要传递的有意义的参数,timestamp,nonce,sign都是为了签名和防重放使用。
服务端接到这个请求:
The text was updated successfully, but these errors were encountered: