当存在例如crossdomain.xml和clientaccesspolicy.xml时有什么意义? PHP /卷曲?

时间:2009-02-25 21:35:55

标签: flash silverlight crossdomain.xml

所以,假设我有一个网站,而且我没有crossdomain.xml或clientaccesspolicy.xml。

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

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

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

  • 使用PHP / cURL以及通过脚本访问我网站的等价物无法实现哪些保护?

1 个答案:

答案 0 :(得分:12)

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

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

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

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