我试图弄清楚如何在 Web 场场景中使用 WCF 实现重放攻击检测机制。
WCF 通过使用随机数缓存来提供这种检测机制。如果我错了,请纠正我,但确保在消息安全和 Web 场场景中防止这种攻击的唯一方法是使用跨服务器共享的随机数缓存。
在 WSE3.0 中,曾经可以提供 nonce 缓存自定义实现
http://msdn.microsoft.com/en-us/library/ff647945.aspx
但是在 WCF 中似乎没有任何方法可以这样做(没有配置选项,除了我在 Reflector 中发现 NonceCache 类被标记为密封和内部......)
有什么想法吗?
最佳答案
首先,对此没有 Elixir 。每个选项都有其缺点。微软推荐 one of two options :
虽然使用传输级安全保护您的服务将保护您免受中间场景中的人的侵害,但它不会保护您免受受损客户端的侵害。所以实际上它不是一个强大的解决方案,使用 stateful security context tokens是两者中更好的方法。这在开发和部署时确实需要一些考虑。
正如我在之前的回答中所说,对此没有 Elixir 。这是使用detectReplays、maxClockSkew、replayWindow 和replayCacheSize 设置的另一个选项(您可能已经考虑过)。尽管我不确定它在 WebFarm 场景中的稳健性,但鉴于 WCF 的底层操作,它应该可以工作。这是一个简短的article that demonstrates it .此选项的缺点是当您的客户端与服务器位于不同的时区时,如果您的 maxClockSkew 出现故障,您将失败。未设置为允许时区差异。
关于wcf - 在 Web 场环境中使用共享缓存来检测 WCF 中的重放攻击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3650553/