N层应用程序中的WCF和Silverlight 4.0:安全服务调用(无SSL,无消息安全,无x.509)

时间:2011-08-15 13:18:54

标签: silverlight-4.0 wcf-security x509certificate n-tier-architecture transport-security

我们的架构是一个简单的N层模型,它由位于IIS7中的ASP.Net应用程序(托管在DiscountASP中)组成,它公开了WCF服务上的方法。这些方法使用EF4与DB通信。客户端使用Silverlight 4.0。

三个要点:

  • 身份验证和Authurazation不是一个问题 - 调用 服务是匿名,我们不关心的身份 呼叫者。

  • 方法中传输的数据调用不敏感

  • 我们只是想确保任何人都无法拨打电话。

如果出错,请纠正我:
消息安全性不是一种选择,因为Silverlight不支持它 传输安全性(HTTPS和x.509 / SSL证书)也无法在Silverlight中完成

因此,我们采取的强制执行某些安全级别的步骤是:

  • 密钥被硬编码到XAP中的dll中。

  • 此dll已被扰乱,因此无法重新设计。

  • 将密钥作为参数发送到所有服务方法 调用。

  • 在每个方法的开头,检查密钥 原来坐在DB。

  • 从服务中删除MetaDataExchange端点。

考虑到这种最小化设置并且存在许多缺陷,最大的缺陷可能是传输不安全(HTTP),并且秘密密钥暴露出来。所以问题是:

如果恶意用户想要损害我们的系统,他需要花费多少精力来提取密钥,找到暴露的方法并开始调用它们?

是否有其他WCF组合可以在每次调用时提供凭据的基本保护(无HTTPS或证书)?

1 个答案:

答案 0 :(得分:0)

嗯,你的previous question合同中的安全意味着什么更清楚。安全性由several aspects组成。

  
      
  • 身份验证和Authurazation不是一个问题 - 调用   服务是匿名的,我们不关心的身份   呼叫者。

  •   
  • 我们只是想确保任何人都无法拨打电话。

  •   

这是一个矛盾。如果您想确保您正在寻找身份验证的所有人都无法进行呼叫。

  
      
  • 方法中传输的数据调用不敏感。
  •   
     

考虑到这种最小的设置并且存在许多缺陷,最大的缺陷可能是传输不安全(HTTP),并且秘密密钥暴露出来。

另一个矛盾 - 你显然想发送敏感数据。

消息安全性不是Silverlight的选项 - 如果我们讨论的是邮件加密和签名,则确实如此,但如果您使用HTTPS提供安全通道,您仍然可以在邮件中传递用户名和密码= TransportWithMessageCredential

找到密钥需要多少努力?

  • 如果您不使用HTTPS,它会找到所有具备基本技能和访问网络流量的人
  • 如果你把钥匙放在装配中,它可能需要更多的技能,但仍然会有钥匙(混淆很难对逻辑进行逆向工程,但常数必须保持不变)。

如果您想保护传输并构建安全解决方案,则必须使用HTTPS。 Silverlight可以使用通过HTTPS公开的服务。您还可以使用用户名和密码来识别您的客户。客户将负责保密用户名和密码,因为如果他们不这样做,您将看到谁的帐户损害了您的申请。