0

当站点具有以下 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>
4

1 回答 1

1

这是最宽容的变体,可能是由主机而不是网站所有者给出的。这是因为 allowed-cross-domain-policies 节点,如果它是您自己的站点,您没有托管其他人的站点,您希望将规则限制为仅此一个文件。

allow-access-from 允许从 HTTPS 加载的内容通过 HTTP 调用此域,反之亦然。这在您自己的网站中可能是不允许的,但谁知道呢,有时广告需要这样做。我不认为在这种情况下 to-ports 属性有任何影响,因为这个文件只能通过 HTTP(S) 访问,通常在公共服务器上侦听端口 80/443。

allow-http-request-headers-from 似乎是多余的,但我不确定,过去的政策发生了很大变化......我不知道任何默认情况下受到限制但可以发送的标头从 Flash 否则。如果有的话,您会在客户端发现更严重的限制。

关于你的另一个问题,好吧,显然,我将它限制在站点 A,而不是所有站点。我还会将此跨域声明为主域(而不是允许子跨域)。我可能会完全删除 allow-http-request-headers-from 以及 to-ports 属性。如果您认为您的 SWF 通过 HTTPS 加载时可能会遇到这种情况,但会尝试使用 HTTP 上传,则保持安全属性不变,否则将其删除或设置为 true。

不仅如此......嗯,这是一个“奖金”。在与 Flash HTTP 进行大量交流后,我得出的结论是,如果您有时间和必要的设施,例如您可以添加服务器模块,或者您可能会影响服务器的运行方式。例如,有一个 Apache 模块可以让它服务于套接字跨域策略。最好使用 Socket 类来实现您需要的 HTTP 部分,而不是使用半a*ed Adob​​e 的实现。

整个跨域业务可能会给您一些虚假的安全感,而实际上是默默无闻的安全。因为它非常不方便,再加上 Flash 自己缺乏 HTTP 的实现,你会遇到一个地方,在那里你被迫做比重新发明 HTTP 更糟糕的事情:)。例如,一旦您需要响应标头,您就会记住这一点... ;)

于 2012-08-06T07:12:45.733 回答