【问题标题】:Is Transport security a bad practice for the WCF service over the Internet?对于 Internet 上的 WCF 服务,传输安全性是一种不好的做法吗?
【发布时间】:2010-06-03 12:58:50
【问题描述】:

我有一个可通过 Internet 访问的 WCF 服务。它具有 wsHttpBinding 绑定和带有用户名凭据的消息安全模式来验证客户端。 msdn 说我们应该在 Internet 场景中使用消息安全,因为它提供端到端的安全性,而不是像传输安全性那样提供点对点的安全性。

如果我通过 Internet 对 wcf 服务使用传输安全性会怎样?这是一个坏习惯吗?恶意用户会看到我的数据吗?

【问题讨论】:

    标签: c# wcf http transport-security


    【解决方案1】:

    不,这将是一个很好的做法 - 问题是:当您处理互联网连接时,您无法保证通过任意数量的中间跃点建立完整的安全连接链。

    您可以保证传输安全性是从您的客户端到第一个跃点的链接,以及从最后一个跃点到您的服务器的链接 - 两者之间的任何事情都超出您的控制范围。所以基本上,互联网上的传输安全是行不通的——除非你有一个严格控制的环境,你知道客户端直接连接到你的服务器。

    由于这些技术限制,传输安全仅在企业/局域网环境中真正起作用。一旦您无法控制路由和中间跃点,您就需要使用消息安全性来实现端到端安全性。

    【讨论】:

    • 我能再问你一件事吗?如果需要通过 Internet 将大量数据传输到 WCF 怎么办?使用 wsHttpBinding 和消息安全非常慢!
    • @Sergey:查看 WCF Streaming - 你也可以使用 wsHttpBinding - 应该加快速度!
    • @Sergey:您可以创建一个单独的服务合同,而没有任何文件传输的消息安全性 - 更快,但不再非常安全 - 这是一个权衡(一如既往,在计算机科学中)。
    • 如果客户端只信任一个特定的 ssl 证书怎么办?它不会使中间人攻击无效并使传输级别的安全性适用于互联网吗?
    • 但是如果连接是通过HTTPS,那么中间人就无法理解消息,因为它是加密的,那么为什么传输安全性不够呢? (我不确定这是否是 @axk 已经问过的)
    【解决方案2】:

    是的,当客户端(大多数客户端都会这样做)验证服务器证书时,它是 100% 安全的。

    这里提到的多跳场景完全是假的。只有当相同的消息通过各种应用程序时,这才是正确的。例如几个应用程序代理。如果这些代理不能安全通信,则中间网络嗅探器可以读取消息。

    换句话说,即使中间有一百万个路由器,通过 Internet 进行的客户端/服务器通信也是 100% 安全的,但只有当客户端验证服务器证书时它才是安全的,因为客户端可以连接到中间人可以使用虚假证书冒充服务器的中间主机。如果客户端不验证证书,则消息可能会被泄露。

    【讨论】:

    • 所以你的意思是在互联网上使用传输安全,数据不能被黑客入侵?
    • 这是正确的,只要传输是安全的。这就是它基本上所说的。您可以选择加密消息和/或传输。但前提是运输是安全的!通过不安全的传输方式发送消息会使通信容易受到攻击。
    【解决方案3】:

    IMO 可能不是 100%

    如果 BlueCoat 可以做到,那么还有谁可以做到?

    http://directorblue.blogspot.com/2006/07/think-your-ssl-traffic-is-secure-if.html

    【讨论】:

    • BlueCoat 依赖于向受信任的机构添加证书。如果没有客户的合作,这是无法做到的。
    猜你喜欢
    • 2017-12-26
    • 1970-01-01
    • 2020-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    • 2014-07-30
    相关资源
    最近更新 更多