【问题标题】:What's the rationale behind cross domain policy for silverlight?Silverlight 的跨域策略背后的基本原理是什么?
【发布时间】:2011-03-27 03:34:54
【问题描述】:

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

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

我不明白为什么要有这个文件。它根本不保护用户,所以他们创建此限制的目的是什么?

更新:阅读 MS 的解释后,我仍然无法看到该政策如何让用户更加了解,因为这一切都是在服务器端完成的,而无需通知用户任何事情。

更新:似乎人们不同意,所以毕竟我的问题不是那么愚蠢:) 答案是保护服务而不是用户?例如,为什么 twitter 想要保护它的服务而不想要它呢?如果一个网站想要保护自己,它会很好地输入一些登录名/密码:) 很明显,一个网站希望从浏览器获得最大的访问权限,无论浏览器是否使用插件都无关紧要,为什么该网站会关心?

【问题讨论】:

  • 用户名密码如何保护其他推特竞争对手滥用推特的网络服务?老实说,这个问题并不愚蠢,但您只需要在 Web 服务安全方面多一点经验。

标签: silverlight cross-domain security


【解决方案1】:

这是为了安全,让您实际上选择同意。

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 控件调用, 没有潜在的破坏性 对数据的后果 服务商店。

【讨论】:

  • 我看不出这个政策如何让用户更加了解,因为这一切都是在服务器端完成的,而没有通知用户任何事情?
  • @user310291 是为了保护服务而不是直接保护用户。这是另一个不错的 SO 阅读:stackoverflow.com/questions/587981/…您的服务不能被您没有选择加入的客户利用。
  • 保护服务?例如,为什么 twitter 甚至不想要它就想保护它的服务?
【解决方案2】:

这里有一点需要考虑。假设 Silverlight 不需要 Web 服务来选择被 Silverlight 客户端或实际上是 Flash 客户端使用的世界。

一些恶意内容设法在流行的 Web 服务 API 中找到一个弱点,并在 Silverlight 或 Flash 中编写一个漏洞利用程序。伤害已经完成,此 Web 服务的用户感到不安。责任的手指可能指向哪里?当新闻报道说 Silverlight 或 Flash 插件是某些违规的“原因”时会发生什么?谁的名誉受损?答:微软/Adobe,尽管事实上它与他们无关。

归根结底,这是关于公共关系,关于存在感知不安全感的风险,而实际上没有任何保证。

通过包含此选择加入要求,这些公司大大减少了可能使用其插件被利用的服务数量。显着降低他们的插件因不正当的声誉而受到不公平损害的风险。对于那些选择加入策略文件的人,可以指出服务提供商有责任在知情的情况下选择包含此类文件。

最终,如果要在冒着让 100,000,000 名潜在用户的公众认知风险或冒着让大约 100,000 名潜在开发者感到不满和困惑的风险之间做出选择,我知道我会选择哪一个。

【讨论】:

  • 您说“一些恶意内容设法在流行的 Web 服务 API 中找到弱点,并在 Silverlight 或 Flash 中编写漏洞利用。”然后我可以说“一些恶意内容设法在流行的 Web 中找到弱点服务 API 并在浏览器中编写漏洞利用。”
  • 那为什么不强制浏览器做同样的事情呢?
  • @user310291:所以浏览器提供商决定用他们最新的浏览器来做这件事。突然间,已经运行的服务现在在新浏览器中使用时停止运行。更糟糕的公关。仅凭逻辑技术价值不能完全为这些决定辩护。此外,基于浏览器的 Javascript 攻击网站不太可能需要特定浏览器才能成功。
【解决方案3】:

假设您有一个 Web 服务,它位于您的网站上,它显示实时股票,并且您希望该网站仅供您的 silverlight 客户端使用。

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

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

【讨论】:

  • 这显然不是原因。跨域安全保护用户免受恶意 Silverlight 小程序的侵害,而不是您的网站免受竞争。用户可以通过授予额外权限轻松绕过保护。
  • 与 Javascript 跨域不同,因为服务器无法通过添加跨域策略文件来规避此问题,从而在用户不知情的情况下缓解此问题
  • @CodeInChaos 在浏览器中托管的 silverlight 中,您可以提升权限吗?如果您注意到 msdn 中的示例,它非常相似。跨域策略适用于浏览器中的任何内容,任何具有提升权限的内容都是具有完全控制权的原生应用程序。
  • @user310291 和 JavaScript 一样,我指的是跨域调用安全的概念。尝试理解,您的网站包含银行网络服务,我可以轻松地从我网站上托管的 silverlight 连接到您的网络服务,它可能会做错事。
猜你喜欢
  • 2015-12-20
  • 2010-09-09
  • 1970-01-01
  • 1970-01-01
  • 2017-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-09
相关资源
最近更新 更多