我试图更多地了解为什么我不应该在互联网上使用 WCF 传输安全性。从这里的答案中,我被告知啤酒花链可能不安全。但是传输安全不就像 https(在互联网上广泛使用)吗?或者我应该问,wcf 传输和 https 有什么区别?
如果我需要更清楚地解释自己,请发表评论。
谢谢
传输安全确实与 HTTPS 非常相似(并且在许多情况下相同)。它为您提供的是客户端和服务器之间的加密隧道。提供从您的客户端到您的服务器的直接连接,这是非常好的(假设您的客户端验证它获得了正确的服务器证书)。如果您的客户端正在与另一个中间服务器通信,而您依靠该中间服务器将消息传递给您的服务器 - 那么该中间服务器将获得未加密的数据。
一个例子 :
您有一家处理付款的公司。由于某些规定,您需要每个国家/地区的服务器,然后这些服务器将请求传递到您在美国的主服务器。
您要确保即使本地托管公司试图找出正在传递的细节,他们也做不到。
这就是Message Security为您提供的 - 您只信任客户端和主服务器,因此您希望只有它们能够加密和解密。
使用Transport Security,将有两个转换 - 客户端将加密,中间服务器将解密。然后它将再次加密,您的主服务器将解密。如您所见,有一个中间阶段,数据在中间服务器的 RAM 中是纯数据。
这篇 MSDN 文章很好地描述了它,以及在哪里使用每个: MSDN
我试图更多地了解为什么我不应该在互联网上使用 WCF 传输安全性
你不应该因为(从这里引用)。
运输安全
传输安全用于在两个端点(服务和客户端)之间提供点对点安全。如果客户端和服务之间存在中间系统,则每个中间点必须通过新的 SSL 连接转发消息。
消息安全
使用消息安全性时,用户凭证和声明被封装在每条消息中,使用 WS-Security 规范来保护消息。从身份验证的角度来看,此选项提供了最大的灵活性。只要客户端和服务都同意,您可以使用任何类型的安全凭证,很大程度上独立于传输。
在您提供的链接上查看另一个答案。它解释了传输安全性不足的情况是客户端不检查服务器证书。我引用了下面的答案:
是的,当客户端(大多数客户端都这样做)验证服务器证书时,它是 100% 安全的。
这里提到的多跳场景完全是假的。仅当同一消息通过各种应用程序传播时,这才是正确的。例如几个应用程序代理。如果这些代理不能安全地通信,则中间网络嗅探器可以读取消息。
换句话说,即使中间有一百万个路由器,通过 Internet 进行的客户端/服务器通信也是 100% 安全的,但只有当客户端验证服务器证书时才安全,因为客户端可以连接到中间人可以使用虚假证书冒充服务器的主机。如果客户端不验证证书,则消息可能会被泄露。