在未使用SSL证书运行的网站上保护WCF数据服务

时间:2014-02-25 17:28:43

标签: c# web-services security wcf-data-services

我有一个网站,我将其用作服务。客户端是c#控制台应用程序而不是浏览器。因此,我可以来回发布加密对象,因为我的客户端是c#console应用程序。

无论如何,因为我不希望我的客户端(控制台应用程序)直接连接到数据库。我在网站上添加了WCF Data service。问题是,现在我无法控制如何加密数据。 我是否有办法配置该服务,以便我的客户可以建立与WCF data service的安全连接,即使该网站没有SSL证书?

修改

在WCF数据服务上,我已覆盖:

protected override MyEntities CreateDataSource()
{
   // etc

并且如果用户发布了正确的加密对象,我将使他能够连接到数据库。回应怎么样?那部分不会加密吗?我该如何加密?

编辑2

我认为我的解决方案是将Web服务作为WCF服务,因为我的客户端是控制台应用程序吗?这样它会安全吗?我不能将WCF数据服务添加到WCF类库项目中。

1 个答案:

答案 0 :(得分:0)

你可以:

  • 在另一个安全通道内部进行隧道HTTP通信,例如TLS(在这种情况下很难理解为什么你不想只使用它),

  • 编写一个序列化程序来保护您的各个有效负载(HTTP资源,如ATOM或JSON数据),在这种情况下,您将创建一个新的媒体类型,

  • 加密/签署模型的各个属性,并将其存储/嵌入数据库/消息中。

当然还有其他扩展点,但这些扩展点似乎涵盖了大多数用例。

我建议您根据更精确的要求优化您的问题或发布新问题,以便您可以获得更好的答案。我还建议您包括一些上下文,因为大多数人都会正确地想知道您的问题是不是XY problem。这样做的原因是实现安全协议比人们通常想象的更难。是的,理论非常简单 - 在这里共享一个公钥,在那里签名和加密对称密钥,在那里加密有效载荷 - 但事实是高级加密抽象是非常漏洞的。你对所发生的事情的所有假设经常在至少几个边缘情况下都是假的,在你知道之前你的小安全项目需要自己的维度。