Flex and crossdomain.xml

7

我在想,将crossdomain.xml添加到应用程序服务器的根目录中是否存在安全问题?它可以添加到服务器的任何其他部分吗?您是否知道任何无需在服务器上放置此文件的解决方法?

谢谢 Damien

5个回答

10
通过添加crossdomain.xml文件,主要的安全问题是Flash应用程序现在可以连接到您的服务器。因此,如果有人登录您的网站,然后浏览到具有恶意Flash应用程序的另一个网站,那么该Flash应用程序可以连接回到您的网站。由于它在浏览器中,所以cookie会被共享给Flash应用程序。这允许Flash应用程序劫持用户的会话,执行您的网站所做的任何操作,而用户却不知情。
如果您的Flex应用程序是从同一服务器提供的,则不需要crossdomain.xml文件。
您可以将其放置在您的站点的子目录中,并使用System.security.loadSecurityPolicy()方法。 http://livedocs.adobe.com/flex/2/langref/flash/system/Security.html 然后应用程序将仅限于您目录结构中的这棵树。

嗨,马克感谢您的评论。这种事情令人担忧。 您知道Adobe是否正在解决此问题或推出更多安全功能以修复此潜在威胁吗?谢谢 达米安 - Damien
1
这是一种“潜在”的设计威胁,有时您需要能够进行跨域通信,这就是为什么需要使用此文件明确允许连接的原因。 - grapefrukt
我不太理解这个风险。如果在服务器根目录下放置一个“允许所有”crossdomain.xml文件,那么这是否只是给Flash应用程序与浏览器已经拥有的相同访问权限?在xxx.com网页上的Javascript无法查看yyy.com的cookie,因为浏览器和Javascript安全性不允许。如果yyy.com的crossdomain.xml设置为允许所有,那么xxx.com上的Flash文件是否真的可以访问yyy.com的cookie? - SkippyFlipjack
Damo - Crossdomain.xml是解决潜在威胁的方法。如果您不希望来自其他域的应用程序访问您的服务器,请不要设置它。 - Marc Hughes
4
假设BANK.COM有一个页面,可以让你在账户之间转账,并且它有一个开放的crossdomain.xml文件。现在,假设用户BOB按照惯例登录BANK.COM。 接下来,BOB离开BANK.COM,去了EVIL.COM。在EVIL.COM上有一个恶意flash应用程序。该应用程序可以向BANK.COM发出请求。这个请求将像任何其他请求一样来自浏览器。这意味着该应用程序可以悄悄地访问该转账页面。由于该请求来自已经正确认证过的浏览器,银行将视用户为已经登录,并愉快地允许它继续进行。 - Marc Hughes
Marc的评论非常中肯。除非你的所有数据都是公开的,否则不应该拥有无限制的crossdomain.xml文件。关于这个话题的最新博客文章:http://erlend.oftedal.no/blog/?blogid=101 - Erlend

1

对于跨域文件,没有任何解决方法,必须支持跨域数据访问或跨域脚本。在任何跨域请求事件中,Flash将查找域根目录下的crossdomain.xml文件。例如,如果您要从以下位置请求XML文件:

http://mysubdomain.mydomain.com/fu/bar/

Flash 将检查是否存在 crossdomain.xml 文件:

http://mysubdomin.mydomain.com/crossdomain.xml

您可以将crossdomain.xml文件放置在其他位置。但是,当您需要从不同位置加载crossdomain.xml文件时,您必须通过Security.loadPolicyFile来执行此操作。请记住,此crossdomain的位置对您拥有的安全访问权限有任何影响。Flash仅授予包含crossdomain及其子文件夹的文件夹访问权限。

您可能还想了解Flash Player 10中的安全更改


这并不是严格意义上的真相;跨域文件的解决方法是通过托管Flash应用程序的同一服务器代理所有网络流量。 - Brian

0

0
您可以为您的应用程序配置虚拟主机。这样,crossdomain.xml文件可以位于您的应用程序根目录下,但不一定要在服务器根目录下。

-1

crossdomain.xml 是一个对 Flash 运行时有意义的文件;你可以限制 HTTP 请求能够看到它的内容。你可以使用 Web 服务器(例如 Apache)的配置控制允许从“根”目录(请参阅上面的答案)仅读取它。

你也可以通过请求中的其他标头进行过滤等操作。

感谢阅读。


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