当站点具有以下crossdomain.xml配置时。以下是什么意思?
其次,如果站点A(http)托管上传到S3的Flash上传器脚本,这个crossdomain.xml文件是否可以安全地存在于S3根目录上?
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<!--
Read this: www.adobe.com/devnet/articles/crossdomain_policy_file_spec.html
-->
<!-- Most restrictive policy:
<site-control permitted-cross-domain-policies="none"/>
-->
<!-- Least restrictive policy: -->
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-ports="*" secure="false"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
<!--
If you host a crossdomain.xml file with allow-access-from domain="*"
and don’t understand all of the points described here, you probably
have a nasty security vulnerability. ~ simon willison
-->
</cross-domain-policy>
答案 0 :(得分:1)
这是最宽松的变体,可能由主持人而非网站所有者提供。这是因为允许跨域策略节点,如果它是您自己的站点,您没有托管其他人的站点,您希望将规则限制为仅这一个文件。
allow-access-from允许从HTTPS加载的内容通过HTTP调用此域,反之亦然。这是您自己可能不允许的网站,但谁知道,有时广告需要这样做。我不认为此上下文中的to-ports属性有任何影响,因为此文件只能通过HTTP(S)访问,通常在公共服务器上侦听端口80/443。
allow-http-request-headers-from似乎是多余的,但我不确定,这些策略在过去发生了很大变化......我不知道任何默认情况下受限制的标头,但是否则可以从Flash发送。如果有的话,您会在客户端找到更严格的限制。
重新提出你的另一个问题,很明显,我将其仅限于网站A,而不是所有网站。我还将此跨域声明为主(不是允许子跨域)。我可能会完全删除allow-http-request-headers-to以及to-ports属性。如果您认为在SWF通过HTTPS加载时可能会出现这种情况,但会尝试使用HTTP上传,请保留安全属性,否则请将其删除,或设置为true。
不仅仅是......嗯,这是一个“奖金”。经过与Flash HTTP的大量交流后,我得出的结论是,如果您有时间和必要的设施,例如您可以添加服务器模块,或者您可能会影响服务器的运行方式。例如。有一个Apache模块,它允许它提供套接字跨域策略。最好使用Socket类来实现所需的HTTP部分,而不是使用半个*的Adobe实现。
整个跨域业务可能会给你一些虚假的安全感,而实际上它是默默无闻的安全性。由于它非常不方便,加上Flash自己缺乏HTTP的实现,你会把自己带到一个地方,在那里你被迫做更糟糕的事情,而不是重新发明HTTP :)。一旦你需要响应标题,例如......;)
,你就会记得