【问题标题】:how to limit access to a silverlight-enabled data service?如何限制对启用 Silverlight 的数据服务的访问?
【发布时间】:2010-12-02 01:53:14
【问题描述】:

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

我们有一些 schmoe 花时间检查我们的 Silverlight 应用程序,以一种或另一种方式找出它正在调用的服务,然后编写他自己的客户来窃取数据,以便他可以将其发布到他的网站上并假装就像是他的一样。我们需要防止这种情况。

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

限制数据服务以使只有我们的应用程序可以使用它的正确/最佳/最有效的方法是什么?谢谢!!!

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

【问题讨论】:

    标签: silverlight wcf-security dataservice


    【解决方案1】:

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

    RIA 服务是处理此问题的更好方法。它建立在 ASP.NET 授权之上,但会自动在客户端和服务器端进行验证,以打击服务欺骗。它允许您通过向您的方法添加属性来处理客户端和服务器端授权,这些属性表明该方法需要授权访问,如果您需要具体说明,还可以指定哪些组或用户。

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

    【讨论】:

      【解决方案2】:

      clientaccesspolicy.xml 告诉 Silverlight 应用程序它可以使用哪个 Web 服务。不阻止人们访问 Web 服务。

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

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

      【讨论】:

      • 感谢您的澄清。实际上,我现在正在考虑使用 SOAP 标头传输私钥,……这也意味着进行混淆,我猜还要对服务进行 HTTPSing,这样他就无法从线路中窥探信息。对吗?
      • 对于 dotfuscate,我假设你只是解压缩 xap,dotfuscate 你可能在那里制作的任何 dll,然后将其重新压缩回 xap 文件,是吗?
      • 在网络上使用 SSL,信息是安全的。尚未尝试对 silverlight 应用程序进行 dotfuscating,但他们似乎支持它:preemptive.com/…
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-01
      相关资源
      最近更新 更多