跨域策略文件crossdomain.xml文件

  • 今天在看xray扫描出来的漏洞报告,看到一个不太懂,便开始了学习,如下图:
    在这里插入图片描述
  • 看到这个敏感信息泄露的报告后,开始重新试验了一下,发现确实存在。
    在这里插入图片描述
  • 对代码进行分析
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*" secure="false"/>
</cross-domain-policy>
  • 返回了cross-domain-policy元素中allow-access-from子元素配置信息
  • domain属性配置请求的域的访问权限,domain="*",表示所有发送请求的域都可以进行访问。
  • to-ports属性配置端口套接字连接权限,to-ports="*",表示所有端口都可以连接到套接字,进行访问。
  • secure属性配置文档访问权限,secure=“false”,表示授予指定来源的所有文档的访问权限。
  • 可以看到对所有域所有端口开放访问权限,并且可以随意访问文档,这是非常危险的。跨域给予便利的同时,也要限制对特定的端口特定的域开放才更安全。

接下来就仔细介绍一下跨域策略文件crossdomain.xml文件

文件简介

  • 所谓跨域,就是需要的资源不在自己的域服务器上,需要访问其他域服务器。跨域策略文件是一个xml文档文件,主要是为web客户端(如Adobe Flash Player等),通过设置跨域处理数据的权限,实现跨域传输数据。

配置规则

cross-domain-policy元素

  • cross-domain-policy元素是跨域策略文件crossdomain.xml的根元素。它只是一个策略定义的容器,没有自己的属性。
  • 其子元素如下:
    在这里插入图片描述

site-control

  • 用于定义当前域的元策略。元策略则是用于指定可接受的域策略文件,且该文件不同于目标域根元素(名为crossdomain.xml)中的主策略文件。

  • 如果客户端收到指示使用主策略文件以外的策略文件,则该客户端必须首先检查主策略的元策略,以确定请求的策略文件是否获得许可。

  • 其属性为:在这里插入图片描述

  • permitted-cross-domain-policies
    用来指定元策略。除套接字策略文件外,所有策略文件的默认值均为master-only,套接字策略文件的默认值为all。

  • 该属性允许的值有:

none:目标服务器上的任何位置(包括该主策略文件)均不允许使用策略文件。
master-only:仅允许这个主策略文件。
by-content-type:仅允许Content-Type:text/x-cross-domain-policy提供的策略文件(只适用于HTTP/HTTPS)。
by-ftp-filename:仅允许文件名为crossdomain.xml的策略文件。(只适用于FTP)
all:允许此目标域中所有的策略文件。

allow-access-from

  1. allow-access-from元素用于授权发出请求的域从目标域中读取数据。可以通过使用通配符(*),为多个域设置访问权限。
  2. 它有以下属性:在这里插入图片描述
domain:指定要授予访问权限的发出请求的域。可以是域名或IP地址。子域将被视为不同的域。指定域时可以使用通配符星号( * )表示多个域。单独使用星号( * )表示所有域。一般不建议设置为星号允许所有域访问。
to-ports:只适用于Sockets。以逗号分隔的端口列表,或者允许连接到套接字连接的一系列端口。端口范围通过在两个端口号之间插入短划线 (-) 指定。端口范围在用逗号隔开时则可以用于指代单个端口。一个通配符 (*) 可用于表示允许所有端口。
secure:只只适用于HTTPS和Sockets。true:指定仅授予指定来源的 HTTPS 文档的访问权限 ,false:授予指定来源的所有文档的访问权限 。如果 HTTPS 策略文件中未指定 secure,则默认为 true。不建议在 HTTPS 策略文件中使用 false,因为这会影响 HTTPS 的安全性。在套接字策略文件中,默认值为 false。只有当套接字服务器接受本地主机连接时,指定 secure=”true” 才有意义,因为本地套接字连接通常不会面临中间人攻击的风险,因此无法更改 secure=”true” 声明。

allow-access-from-identity

  • allow-access-from-identity元素根据加密凭据授予权限,而 allow-access-from 则截然不同,它根据来源授予权限。

allow-http-request-headers-from

  • allow-http-request-headers-from元素用于授权发出请求的域中的请求文档将用户定义的标头发送到目标域。而 allow-access-from 元素旨在授权从目标域提取数据。这个标签授权以标头的形式推送数据。
  • 它有以下属性:在这里插入图片描述
domain:指定要授予访问权限的的域。可以是域名,也可以是IP地址,子域将被视为不同的域。通配符 (*) 单独使用时可用于表示所有域,在用作以句点 (.) 分隔的明确二级域名前缀时表示多个域。表示单个域时需要使用单独的 allow-access-from 元素。
headers:以逗号分隔的标头列表,表示允许发送的请求域。通配符 (*) 可用于准许所有标头或头后缀,从而支持以相同字符开头但以不同字符结尾的标头。
secure:只适用于HTTPS,如果设置为 false,则表示允许 HTTPS 策略文件授权访问 HTTP 源发出的请求。默认值为 true,表示仅提供 HTTPS 源权限。不建议使用 false,不太安全

匹配规则

  • 各个域或子域必须完全匹配。
  • 域通配符与该域本身及所有子域匹配。
  • IP地址和域名匹配
  • 单独使用通配符 (*) 允许所有请求者进行访问(在策略文件范围内的所有内容完全公开的情况下才使用)

文件范例

  • 允许所有资源访问的crossdomain.xml
<?xml version="1.0"?> 
<!DOCTYPE cross-domain-policy SYSTEM 
"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd"> 

<cross-domain-policy> 
<site-control permitted-cross-domain-policies="all"/> 
<allow-access-from domain="*" secure="false"/> 
<allow-http-request-headers-from domain="*" headers="*" secure="false"/> 
</cross-domain-policy> 
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页