游乐游手机版
首页/网络安全/文章详情

HTML5安全风险之CORS跨域资源共享攻击原理及防范详解

时间:2026-07-18 21:57
一、从SOP到CORS的演进 先从经典问题说起。在Web安全领域,同源策略(SOP)始终是基础规则:一个域下的文档或脚本,无法随意读取或修改另一个域的文档属性。换言之,Ajax请求默认不允许跨域。这给开发者带来诸多挑战,因此催生了多种跨域方案,如JSONP、Flash Socket等,形态各异。下图

一、从SOP到CORS的演进

先从经典问题说起。在Web安全领域,同源策略(SOP)始终是基础规则:一个域下的文档或脚本,无法随意读取或修改另一个域的文档属性。换言之,Ajax请求默认不允许跨域。这给开发者带来诸多挑战,因此催生了多种跨域方案,如JSONP、Flash Socket等,形态各异。下图可直观展现当时的情形:

HTML5安全风险之CORS攻击详解

后来,CORS(跨源资源共享)应运而生。它定义了一套浏览器与服务器之间的交互规则,用以判断某个跨域请求是否被允许。可视为一种“折中”方案——比完全放开更安全,又比SOP的严格限制更灵活。简单说,CORS旨在让Ajax实现可控的跨域访问,示意如下:

HTML5安全风险之CORS攻击详解

目前W3C的官方文档仍处于工作草案阶段,但正向正式推荐标准推进。好消息是,大多数现代浏览器已提供支持。

服务器端对CORS的支持,主要依赖设置Access-Control-Allow-Origin这个HTTP头。若浏览器检测到相应配置,即可允许Ajax进行跨域访问。举例:

Access-Control-Allow-Origin: https://blog.csdn.net

目前应用CORS的系统包括Face.com、Google Cloud Storage API等,主要用于开放平台向第三方提供访问能力。

二、CORS引发的安全隐患

CORS确实很有用,能共享不少内容,但其风险不容忽视。因为它本质上是一个“盲目”的协议——仅靠HTTP头控制,而HTTP头是可以伪造的。

1. HTTP头无法验证请求来源的真实性

HTTP头只能说明请求来自某个域,但无法证明这个事实。因此,未经身份验证的跨域请求永远不应被信任。如果某些重要功能需要暴露或返回敏感信息,必须验证Session ID。

2. 第三方可能被入侵

设想一个场景:FriendFeed通过跨域请求访问Twitter,FriendFeed获取tweets、提交tweets并执行用户操作,Twitter提供响应。两者相互信任,FriendFeed不验证数据有效性,Twitter也对FriendFeed开放了大部分功能。

但如果Twitter被入侵:

FriendFeed总是从Twitter获取数据,未经过编码或验证就直接显示在页面上。一旦Twitter被入侵,这些数据就可能存在危害。

反过来,如果FriendFeed被入侵:

Twitter响应FriendFeed的请求,比如发表tweets、更换用户名甚至删除账户。攻击者可利用这些请求篡改用户数据。

因此,请求方必须验证接收数据的有效性,服务方则只暴露最少、最必要的功能,这一点至关重要。

3. 恶意跨域请求

即便页面只允许来自某个信任域的请求,它仍然会收到大量其他域的跨域请求。这些请求若被用于执行应用层的DDOS攻击,后果严重。

举例:考虑一个搜索页面,当通过%参数请求时,搜索服务器会返回所有记录——这是一个计算密集型操作。要击垮这个网站,攻击者可利用XSS漏洞将JavaScript脚本注入某个公共论坛,当用户访问该论坛时,其浏览器会重复执行针对该搜索服务器的请求。或者更简单,使用一个目标地址包含请求参数的图像元素也能达到同样目的。如果可能,攻击者甚至可以创建一个Web Worker来执行这种攻击,大量消耗服务器资源。

有效的解决办法是通过多种条件(如HTTP头、参数等)来屏蔽非法请求。

4. 内部信息泄露

假设一个内部站点开启了CORS。如果内部网络的用户访问了恶意网站,恶意网站可通过跨域请求获取内部站点的内容,带来信息泄露风险。

5. 针对用户的攻击

前面几个风险主要针对服务器,这一条则针对用户。比如,攻击者发现某个名为productsearch.php的页面存在SQL注入漏洞,且该页面可全域访问。攻击者并不直接动手,而是编写一个JavaScript数据采集脚本,插入到自己的网站或存在XSS漏洞的网站上。当受害者访问这个恶意页面时,浏览器就会自动执行针对productsearch.php的SQL注入攻击,采集所有数据并发送给攻击者。服务器日志显示,攻击来自受害者的IP,而受害者自己的系统并未被攻破,没有任何恶意软件痕迹。

三、攻击工具

Shell of the Future是一个反向WebShell处理器,它利用HTML5的跨站请求来劫持会话。下面是一个示意界面:

HTML5安全风险之CORS攻击详解

四、防御策略

综上所述,防御CORS攻击需要把握几个关键点:

  • 不信任未经身份验证的跨域请求,务必先验证Session ID或Cookie。
  • 请求方要验证接收数据的有效性,服务方只暴露最少、最必要的功能。
  • 通过多种条件(如HTTP头、参数等)屏蔽非法请求。

以上所述就是CORS攻击的几个关键风险点,理解这些之后,才能更有针对性地做好防护。

来源:https://www.jb51.net/hack/383329.html
上一篇在线客服插件安装使用注意事项指南 下一篇HTML5 Web Storage攻击与安全风险详解
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
GPT-Red:释放稳健的自我完善能力
网络安全 · 2026-07-18

GPT-Red:释放稳健的自我完善能力

GPT-Red是一种自动化红队模型,通过自我对弈强化学习训练,可规模化发现漏洞并生成对抗数据。将其用于训练GPT-5 6后,直接提示注入故障减少6倍,在保留能力的同时显著提升稳健性,为模型安全自我改进开辟新路径。

Consensys曾让朝鲜关联开发者接触系统一个月未造成影响
网络安全 · 2026-07-18

Consensys曾让朝鲜关联开发者接触系统一个月未造成影响

区块链公司Consensys证实,一名通过第三方引入的开发者与朝鲜有关联,其接触系统约一个月后被发现并切断权限。调查确认无资产或数据损失,未植入恶意代码,但事件暴露了朝鲜背景团体渗透数字资产企业的风险模式。

黑客教你破解电子邮箱账号的三种方法详细步骤
网络安全 · 2026-07-18

黑客教你破解电子邮箱账号的三种方法详细步骤

电子邮件虽然便捷高效,但你真的了解其背后的安全风险吗?从邮件发送、传输到接收的每一个环节,都可能潜藏着漏洞,让攻击者有机可乘,轻松破解邮箱账号、窃取邮件内容。接下来,我们将逐一剖析这些薄弱环节,帮助您全面掌握电子邮件安全防护要点。 一、利用邮件服务器操作系统的漏洞 邮件服务器软件通常运行在特定操作系

黑客破解验证码机制的常见方法
网络安全 · 2026-07-18

黑客破解验证码机制的常见方法

验证码这东西,大家应该都不陌生。简单说,就是把一串随机数字或符号生成图片,再在图片里加一些干扰像素,防止OCR直接识破。用户得靠肉眼识别出来,输入表单提交给网站验证,通过后才能继续操作。很多网站为了挡住机器人的自动注册、登录、灌水,都用了这套技术。 但问题来了——很多验证码实现其实漏洞百出。比如直接

手机数据泄露大揭秘:你的信息到底安全吗?
网络安全 · 2026-07-18

手机数据泄露大揭秘:你的信息到底安全吗?

如果你给自己的手机设置了PIN码,甚至复杂到自己都忘了,或者用了更高级的指纹解锁,你是不是就觉得手机里的信息固若金汤了?实际上,这种做法对于大多数普通用户来说,确实算得上安全。但换个角度,对于那些真正盯上你手机里数据的人来说,一次简单的充电,就可能让所有防护形同虚设。现如今,手机早已不只是一个通信工