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

标签 wcf security wcf-security

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

WCF 通过使用随机数缓存来提供这种检测机制。如果我错了,请纠正我,但确保在消息安全和 Web 场场景中防止这种攻击的唯一方法是使用跨服务器共享的随机数缓存。

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

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

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

有什么想法吗?

最佳答案

首先,对此没有 Elixir 。每个选项都有其缺点。微软推荐 one of two options :

  • 使用带有状态安全上下文 token 的消息模式安全(启用或不启用安全对话)
  • 将服务配置为使用传输级安全

  • 虽然使用传输级安全保护您的服务将保护您免受中间场景中的人的侵害,但它不会保护您免受受损客户端的侵害。所以实际上它不是一个强大的解决方案,使用 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/

    相关文章:

    wcf - 生产 WCF 上的 "Cannot find the X.509 certificate"但在暂存和本地工作

    c# - WCF 服务可以替代 TCPListener 的功能吗?

    java - RESTful安全授权

    php - 在 php 中解决跨站点脚本 (XSS) 的最佳方法/实践?

    java - 适用于 Android 的 Firebase 实时(在线)数据库的安全性如何?

    wcf - 消息安全异常 : The HTTP request was forbidden with client authentication scheme 'Anonymous' "when accessing credential secured WCF service

    c# - 通过带有 XML 的 JavaScript 的 WCF 服务 - 数组参数

    WCF 无法为具有权限的 SSL/TLS 安全通道建立信任关系

    wcf - 为什么在传入联合安全 token 时此 WCF 调用失败

    wcf - 对象图中可以序列化或反序列化的最大项目数...