7

因此,假设我有一个站点,但上面没有 crossdomain.xml 或 clientaccesspolicy.xml。

这意味着人们无法通过 Silverlight 或 Flash 应用程序访问我的网站。

但他们可以使用,比如 PHP 中的 cURL(或其他语言中的等价物)从我的站点获取信息,并通过 REST 或 WebService 等将其提供给他们的 Silverlight 和 Flash 应用程序。

  • 有人可以准确解释这些限制如何保护我的网站,例如跨域脚本吗?

  • 他们用 PHP/cURL 和可以通过脚本访问我的网站的等价物无法做到这一点的保护措施是什么

4

1 回答 1

12

PHP 是一种服务器端技术,代码在服务器上执行,而不是在用户的机器上。Silverlight 是一种在用户机器上运行的客户端技术。

如果 Silverlight 代码可以向任何域发出任意 Web 请求,它将为大量跨站点脚本攻击打开大门。

想象这个场景:
Bob 访问 www.OnlineBanking.com 并登录以查看他的帐户余额。他通过导航到另一个地址离开了这个站点。他没有单击“注销”,所以他仍然登录(或者,他打开一个新的浏览器窗口/选项卡,使银行站点仍然打开)。
Bob 浏览到 evil.com,其中包含一个 Silverlight 应用程序。
Silverlight 应用程序已下载并在 Bob 的机器上运行。
此应用程序向 www.OnlineBanking.com/secretaccountdetails.html 发出 Web 请求。此文件需要身份验证才能读取(evil.com 未经过身份验证,因此无法访问)。
鲍勃然而验证通过,请求成功。silverlight 应用程序可以读取此文件的内容并对其进行任何操作(包括将其发送到 evil.com)。

Silverlight 中的跨域请求限制阻止了上述情况的发生。当 silverlight 应用程序向 OnlineBanking.com 发出请求时,它将检查跨域策略文件,因为该应用程序是从不同的域提供的。由于 OnlineBanking.com 没有允许跨域请求的策略文件,因此请求失败并且 Silverlight 应用程序无法下载 secretaccountdetails.html。

于 2009-02-25T23:18:30.403 回答