使用Web场环境中的共享缓存来检测WCF中的重放攻击

Jav*_*avi 24 security wcf wcf-security

我试图弄清楚如何在Web场方案中使用WCF实现重放攻击检测机制.

WCF通过使用nonce缓存提供这种检测机制.如果我错了,请纠正我,但确保在邮件安全和Web场方案中防止此攻击的唯一方法是使用跨服务器共享的nonce缓存.

在WSE3.0中,过去可以提供nonce缓存自定义实现

http://msdn.microsoft.com/en-us/library/ff647945.aspx

但是在WCF中似乎没有任何方法可以这样做(没有配置选项,除了我在Reflector中发现NonceCache类被标记为密封和内部..)

有什么想法吗?

小智 1

首先,对此没有灵丹妙药。每个选项都有其缺点。Microsoft 推荐以下两个选项之一

  • 使用具有状态安全上下文令牌的消息模式安全性(启用或不启用安全对话)
  • 配置服务以使用传输级安全性

虽然使用传输级安全性可以保护您的服务免受中间人的影响,但它无法保护您免受受损客户端的侵害。因此,实际上这不是一个强大的解决方案,使用有状态的安全上下文令牌是两者中更好的方法。这确实需要在开发和部署时考虑一些因素。

正如我在之前的回答中所说,对此没有灵丹妙药。这是使用 detectorReplays、maxClockSkew、replayWindow 和 replayCacheSize 设置的另一个选项(您可能已经考虑过)。尽管我不确定它在 WebFarm 场景中的稳健性,但考虑到 WCF 的底层操作,它应该可以工作。这是一篇简短的文章来演示它。此选项的缺点是,当您的客户端与服务器处于不同时区时,如果您的maxClockSkew未设置为允许时区差异,您将会遇到故障。