Silverlight的跨域政策背后的理由是什么?

时间:2011-03-26 17:15:53

标签: silverlight cross-domain security

尝试呼叫远程休息网络服务时遇到问题 https://stackoverflow.com/questions/5442175/error-on-httpwebrequest

这似乎是由于远程服务器上缺少跨域策略文件 http://forums.silverlight.net/forums/p/183993/419448.aspx

我不明白拥有此文件的原因。它根本不保护用户,因此他们创造了这个限制的目的是什么?

更新:从MS读取解释我仍然无法看到此政策如何让用户更加清楚,因为它完全在服务器端完成,而不会通知任何用户。

更新:似乎人们不同意所以我的问题不是那么愚蠢:)答案是安全的服务而不是用户?例如,为什么Twitter会想要保护其服务而不想要它?如果一个网站想要保护自己,那么就可以提供一些登录/密码:)很明显,一个网站希望从浏览器获得最大的访问权限,如果浏览器使用插件或者没有,为什么网站会关心呢?

3 个答案:

答案 0 :(得分:4)

这是为了安全,让你真正选择允许它。

MSDN解释得最好,所以我没有必要重新措辞:

  

使用Silverlight版本4   跨域通信需要   防范几种类型的   可以的安全漏洞   用于利用Web应用程序。   跨站点伪造是一类   利用时会成为威胁   允许跨域调用。这个   利用涉及恶意   Silverlight控制传输   未经授权的命令给第三方   服务,没有用户的知识。   为防止跨站点请求伪造,   Silverlight仅允许原始站点   默认为所有人进行通信   图像和媒体以外的请求。   例如,Silverlight控件   托管在   http://contoso.com/mycontrol.aspx可以   仅访问相同的服务   域默认 - 例如   http://contoso.com/service.svc,但是   不是服务   http://fabrikam.com/service.svc。这个   防止恶意Silverlight   控制托管在   调用http://contoso.com域名   未经授权的服务操作   托管于http://fabrikam.com   域。

     

启用Silverlight控件   访问另一个域中的服务,   该服务必须明确选择加入   允许跨域访问。通过   选择加入,服务说明了   它暴露的操作可以安全地进行   由Silverlight控件调用,   没有潜在的破坏性   对数据的后果   服务店。

答案 1 :(得分:1)

这是需要考虑的事情。假设Silverlight不需要Web服务选择由Silverlight客户端或确实是Flash客户端使用的世界。

一些不满情绪设法在流行的Web服务API中找到弱点,并在Silverlight或Flash中编写漏洞。已经完成了危害并且此Web服务的用户感到不安。责任的指责可能会指向哪里?当有消息称Silverlight或Flash插件是某些漏洞的“原因”时会发生什么?谁的声誉受到伤害?答:Microsoft / Adob​​e虽然实际上它与它们无关。

最终这是关于公共关系,关于存在感知不安全的风险,其中没有一个是真正的保证。

通过包含此选择加入要求,这些公司大量减少了可能使用其插件利用的服务数量。显着降低他们的插件因不受欢迎的声誉而受到不公平玷污的风险。对于那些选择加入的人来说,政策文件可以指向服务提供商的责任,服务提供商做出明智的选择以包含这样的文件。

最终,如果可以选择让您的公众认知面临100,000,000名潜在用户,或者冒着一些不满和大约10万潜在开发人员困惑的风险,我知道我会选择哪一个。

答案 2 :(得分:0)

想象一下,您有一个网络服务,它位于您的网站上,它显示实时股票,您希望此网站仅供您的Silverlight客户使用。

现在我可以编写一个Silverlight客户端并将其放在我的网站上,该网站将从您的网站获取数据,我可以窃取您的数据,用户会觉得这是我的数据。因为没有办法确定谁在连接它。

因此,除非您允许来自您的域名,否则从我的域名加载的silverlight将无法连接。这不适用于服务器客户端安全性,但这适用于跨域安全性。与JavaScript跨域安全性相同,您无法访问从不同域加载的任何对象。