我们的架构是一个简单的N层模型,它由坐在IIS7中的ASP.Net应用程序(在DiscountASP中托管),这暴露了WCF服务的方法。这些方法使用EF4与数据库交谈。客户端在Silverlight 4.0中。N层应用程序中的WCF和Silverlight 4.0:安全服务调用(无SSL,无信息安全,否x.509)
三个要点:
认证和Authurazation是不是一个问题 - 到 服务调用匿名,我们不关心 呼叫者的身份。
传入方法调用的数据在不敏感。
我们只是想确保任何人都无法拨打电话。
纠正我,如果在错误的:
信息安全是不是一种选择,因为它不支持Silverlight。
传输安全(HTTPS和X.509/SSL证书),也不能在Silverlight
所以我们采取的强制安全的一些级别的步骤来完成的:
一个密钥硬编码到XAP的dll中。
这个DLL是混乱的,所以它不能被重新设计。
密钥作为参数发送到所有服务方法 调用。
在每种方法开始时,检查数据库中原始坐标的 密钥。
从服务中删除MetaDataExchange端点。
考虑这个最小的设置和它的许多缺陷,最大的缺陷可能是一个事实,即传送不保证(HTTP),和秘密密钥被暴露。所以问题是:
如果恶意用户想要伤害我们的系统,他需要付出多少努力才能提取密钥,找到暴露的方法并开始调用它们?
是否有其他的WCFcombiantion可以在每次调用时提供基本的凭证保护(无HTTPS或证书)?
好吧,关于HTTPS:1)为了用户,我们必须使用SSL证书? 2)使用HTTPS可能会损害客户端的服务可访问性吗? (我们希望无论客户身在何处都可以访问服务 - 防火墙后,咖啡店的当地Wifi网络等) –