【问题标题】:How to protect calls to web services from being visible如何保护对 Web 服务的调用不被看到
【发布时间】:2013-02-10 08:53:01
【问题描述】:

我使用 silverlight 5 和 WCF .. 并且该站点使用 HTTPS 保护。但是,如果我使用 fiddler ,我可以在标题中看到: GET /ClientBin/XXXX-Web-MyService.svc/binary/GetUsers

如果我把它直接放在我的域之后:https://www.mydom.com/ClientBin/XXXX-Web-MyService.svc/binary/GetUsers

它将从表格​​用户那里下载所有数据。我怎样才能隐藏和保护这些信息不被看到!!没有使用 SSL 吗?如果我使用 https!为什么这仍然可见?

谢谢。

编辑:我最初的问题是一种“未受过教育”的问题,对此我深表歉意,

我找到了有关该主题的更多信息并进行了更多研究。在这个关于 SO 的 Q 中,解释了为什么提琴手能够解密和查看通过 https 发送的请求和响应。
What is point of SSL if fiddler 2 can decrypt all calls over HTTPS?

为了让事情变得更加困难,这个问题的常见解决方案是使用 "Certificate Pinning" 这需要使用 System.Net.ServicePointManager,它不包含在 System.Net 命名空间的 silverlight 实现中。

所以在这里我被 SSL 证书困住了。任何具有 Web 调试基本知识的人都可以“破解”我为此付出的代价。

【问题讨论】:

  • https/SSL 仅用于保护动态信息。用户显然必须能够读取另一端的数据。但它可以阻止数据在途中被拦截或篡改。您对数据传输的具体要求是什么?这听起来有点像您遇到了不受信任的平台问题。
  • 感谢您的评论@Aron,我更新了我的问题,提供了我在该主题上找到的更多信息。
  • 再次。您要防范什么?
  • fiddler 和其他网络调试代理。
  • PS 你确实意识到 Fiddler 工作的唯一原因是因为你,作为计算机的管理员,告诉计算机 Fiddler 正在做我想做的事情。而且那个提琴手不会对别人的电脑起作用?

标签: wcf https ssl-certificate fiddler man-in-the-middle


【解决方案1】:

从纯粹的理论计算机科学的角度来看,您所要求的几乎是不可能的,实际上是不可能的。您需要实施一个受信任的平台来防止攻击。

现在是科学部分,集中注意力

好的,让我们从一些基本理论开始。 SSL 以及由此扩展的 HTTPS 解决了一个非常非常具体的问题。您如何通过不安全的 NETWORK 机密信息与您以前从未联系过的一方交流信息。在这种情况下,重点是网络。它通过解决两个问题来做到这一点,

  1. 服务器的身份验证(服务器就是它所说的)
  2. 密钥交换的非对称加密

有一些重叠,以确保这是一个步骤。我将专注于第一个,因为这是提琴手“攻击”您的系统的地方。

SSL 身份验证基于信任网络的概念。您的计算机有一个受信任的验证者列表。这些是 Verisign、Thawte、Geotrust 等公司。这些公司通过签署证书来验证证书(复杂的非对称加密术语,但它非常像手写签名,难以伪造,易于验证)。

Fiddler 通过将新的受信任 CA(验证程序)插入您的计算机来工作。从那时起,当您访问一个 HTTPS 站点时,它会代表您发送请求,读取它,然后将其转发给您,并带有自己的签名。由于您的计算机完全信任此签名,因此它认为没有任何问题。

现在,您要实施证书固定。这个恕我直言“非常糟糕”。它通过告诉您的软件需要特定的 SSL 证书来工作。这不好的两个原因。

  1. 如果我可以使用 Fiddler,我可以使用 dotPeek 并重新编译而无需证书固定。
  2. 当您的证书被吊销时,您的客户端将无法连接。

为什么您的证书会被吊销?如果您的 CA 丢失了他们的私钥,那么他们将有义务确保其被撤销并向您发送替换密钥。此外,每张证书也都有销售日期,并且必须在它们开始发出异味之前更换。

那么最后你能做什么?

SSL 并非旨在防止您在计算机上执行的操作。执行您所要求的最简单的方法是将 WCF 调用简单地包装在额外的对称(甚至非对称)加密层中。但又一次。密钥必须存在于某个地方,因此您的客户端将能够通过对二进制文件的简单反汇编获得密钥,并能够构建自己的代理。

总结

这与 DRM 问题几乎完全相同。你想让你的客户访问他们机器上的东西,但不向他们展示它是如何工作的。如果您确实设法解决了这个问题,请发布后续信息,因为索尼、任天堂和微软(仅举几例)会对您的发现非常感兴趣。

【讨论】:

    猜你喜欢
    • 2017-01-03
    • 2014-03-01
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 2011-06-16
    • 2015-06-16
    • 1970-01-01
    相关资源
    最近更新 更多