如何添加时间戳(防止重放攻击)
我已经对SOAP消息加密签名了,请问怎样添加时间戳,拜托了,我查了好久的资料~拜托
[解决办法]
我做过HTTP认证的相关东西,为了防止重放攻击,采用HTTP摘要访问认证。就是每隔一段时间,在server端重新生成一个nonce值,然后client拿着这个值重新认证一次。你的问题有点笼统,但我想应该和HTTP摘要访问认证是一样的。
我只说我是怎么做的,不知道对于你的情况是否合适。
假设有个类专门用来做HTTP摘要认证。在这个类中,
首先,肯定需要定义一个时间戳大小,比如说一个小时,如果时间过期了,那就需要server端重新生成一个值。
public static TimeSpan RefreshTime = TimeSpan.FromMinutes(60);
其次,需要有一个DateTime _dt; 来保存client访问的时间。(比如说,在第一次client请求时,记录_dt,然后再一个小时内,不需要更新它,当一个小时过期了,需要更新这个时间。)
在client每次访问的时候,需要查看这个时间是否过期了,如果过期了,需要重新记录下当前的访问的时间。
- C/C++ code
DateTime current = DateTime.Now; // 每次访问的时间if (current >= _dt.Add(RefreshTime)) // 如果访问的时间大于一个特定的时间戳,则需要更新保存的时间{ _dt = current; // 生成新的nonce值 // ...}
[解决办法]
加密的时候吧当前时间放进去
也就是 加密一定和这个时间有关联
解密后发现时间过期就算失败
具体怎么加 SOAP下我不太清楚
不过soap的内容里面 在多带个时间字段 我想没什么问题吧