如何限制对支持Silverlight的数据服务的访问?

时间:2009-09-28 17:30:47

标签: silverlight wcf-security dataservice

我们编写了一个Silverlight应用程序,该应用程序调用支持Silverlight的数据服务。 Silverlight应用程序不需要登录,因为需要向未经身份验证的公众提供数据。

我们有一些schmoe花时间检查我们的Silverlight应用程序,以某种方式弄清楚它正在调用什么服务,然后编写自己的客户端来篡改数据,以便他可以将其发布到他的网站上并假装喜欢这是他的。我们需要防止这种情况。

如何以某种方式限制我的数据服务只接受来自我的silverlight应用程序的请求?我尝试使用clientaccesspolicy.xml文件中的 allow-from domain uri 设置来限制仅从silverlight应用程序所在的域(例如mydomain.com)访问服务。但这绝对没有任何意义,该服务仍在向域外的客户提供请求。 (我通过将我的SL应用程序放在我们控制的不同域上来测试这一点)。

限制数据服务的正确/最佳/最有效方法是什么,只有我们的应用才能使用它?感谢!!!

我正在使用SL 3和.NET 3.5。

2 个答案:

答案 0 :(得分:1)

clientaccesspolicy.xml告诉Silverlight应用程序可以消耗哪些Web服务。不妨碍人们访问Web服务。

即使不需要,您也可以尝试使用身份验证登录。这可以防止'schmoes'访问您的Web服务。

还可以使用Dotfuscator来防止'schoes'反汇编您的Silverlight应用程序并获取登录信息。

答案 1 :(得分:1)

Silverlight Web服务安全性遵循您用于ASP.NET安全性的相同模式,尤其是暴露于AJAX的服务。最好的方法是使用ASP.NET的身份验证。

RIA Services是处理此问题的更好方法。它位于ASP.NET授权之上,但在客户端和服务器端自动验证以对抗服务欺骗。它允许您通过向方法添加属性来指示该方法需要授权访问,以及您需要特定的组或用户来处理客户端和服务器端授权。

除了线端安全性和混淆之外,请记住客户端可以将调试器附加到在其浏览器中运行的Silverlight应用程序。请参阅此example from MSDN Magazine's Security IQ Test, November 2008