当使用PHP/cURL时,crossdomain.xml和clientaccesspolicy.xml的意义是什么?

7
那么假设我有一个网站,但是没有crossdomain.xml或clientaccesspolicy.xml文件。这意味着人们无法通过Silverlight或Flash应用程序访问我的网站。但是他们可以使用PHP中的cURL(或其他语言的等效物)从我的网站获取信息,并通过REST或WebService等方式提供给他们的Silverlight和Flash应用程序。有人能解释一下这些限制如何保护我的网站,例如防止跨域脚本攻击吗?它们所保护的内容是否无法通过具有对我的网站进行脚本访问权限的PHP/cURL等进行实现?
1个回答

12

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

如果Silverlight代码可以向任何域发出任意的Web请求,那么它将为各种跨站脚本攻击敞开大门。

假设情景如下:
Bob打开www.OnlineBanking.com并登录以查看他的账户余额。他通过导航到不同的地址离开该网站。他没有点击“登出”,因此仍然登录着(或者他打开一个新的浏览器窗口/标签页,离开银行网站仍然保持着登录状态)。 Bob浏览到evil.com,其中包含一个Silverlight应用程序。 Silverlight应用程序被下载并在Bob的机器上运行。 此应用程序向www.OnlineBanking.com/secretaccountdetails.html发出Web请求。该文件需要进行身份验证才能读取(evil.com未经授权,因此无法访问该文件)。 但是Bob已经经过了身份验证,请求成功。Silverlight应用程序可以读取该文件的内容并对其进行任何操作(包括将其发送给evil.com)。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接