2009-02-25 40 views
7

假设我有一个网站,并且我没有crossdomain.xml或clientaccesspolicy.xml。当存在例如crossdomain.xml和clientaccesspolicy.xml时,什么意思? PHP /卷曲?

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

但他们可以用,说卷曲在PHP(或其他语言中的等价物)从我的网站获取信息,并通过REST或WebService提供给他们的Silverlight和Flash应用程序等

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

  • 什么是他们通过PHP/cURL和其他通过脚本访问我的网站无法完成的保护?

回答

12

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

如果Silverlight代码可以对任何域进行任意的Web请求,它将打开大量跨站脚本攻击的大门。

这种情况下的图像:
鲍勃去www.OnlineBanking.com并登录检查他的帐户余额。他通过导航到不同的地址离开这个网站。他没有点击“注销”,所以他仍然登录(或者,他打开一个新的浏览器窗口/选项卡,使银行网站仍然打开)。
Bob浏览到包含Silverlight应用程序的evil.com。
Silverlight应用程序已下载并在Bob的机器上运行。
此应用程序向www.OnlineBanking.com/secretaccountdetails.html发出网络请求。该文件需要认证才能阅读(evil.com未经过认证,因此无法访问它)。
Bob但IS已通过身份验证,并且请求成功。 silverlight应用程序可以读取这个文件的内容并做任何它喜欢的事情(包括发送给evil.com)。

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