XSS注入方式和逃避XSS过滤的常用方法(整理)
(转自黑吧安全网http://www.myhack58.com/)
web前端开发常见的安全问题就是会遭遇XSS注入,而常见的XSS注入有以下2种方式:
一、html标签注入
这是最常见的一种,主要入口为表单项(一般就是正则过滤不周全)、内联样式表(exploer)
正则过滤的解决办法,php一般会使用htmlspecialchars或者htmlentities函数进行转义
注入方式有<script>/图片标签/连接标签/head头中其他标签,比如:
<sCrIpT. src=xss.js></sCrIpT> <<script>alert("xss");//<</script>
img src="javascript.:alert('xss');"> <img """><script>alert("xss")</script>">
<script. a=">" SRC="xss.js"></script> <iframe. src="javascript.:alert('xss');"></iframe>
二、js代码注入
一般为使用JS代码直接引用,不经校验的字符串,解析不安全的json(p)数据等
比如一个name字段,没有经过过滤时,当name等于以下输入时
';alert('xss');//
'';!--"<xss>=&{()}
那使用document.write('u name is' + name);,就会破坏原有结构,插入不期望的数据
三、应对XSS注入的方法主要有2种:
1、对输入的数据进行转义保存,在输出时再进行还原
2、对输入的数据进行过滤,确保输入数据符合我们的期望(数据类型、长度、过滤空格/特殊字符、判断唯一性等)
对应的,逃避过滤的方法就有以下几种:
A、许多过滤匹配特殊的标签,包括起始与结束尖括号。但是,许多浏览器接受结束括号前的空白符,允许攻击者轻易避开这种过滤。例如:<script. >
B、因为许多人用小写字符编写HTML代码,所以一些过滤仅检查常用的小写恶意标签。例如:<ScRiPt>,通过改变字符大小写避开过滤。
C、一些过滤匹配任何成对的起始与结束尖括号,删除其中的任何内容,但通常可以依靠周围现有的语法,结束注入的标签,从而避开这种过滤。比如:
a 某个表单中的value值为:
最新文章
- Java中isAssignableFrom的用法
- Extjs 组件共用(单例)问题
- 受限玻尔兹曼机RBM—简易详解
- poj 1201 差分约束
- linux内核中与进程相关的数据结构(基于linux3.16-rc4)
- Walkthrough: Creating and Using a Dynamic Link Library (C++)
- (转)ObjC利用正则表达式抓取网页内容(网络爬虫)
- Request对象 --web浏览器向web服务端的请求
- Java抽象类深入理解-----模板方法设计模式(Templete Method)
- leetcode — subsets-ii
- POJ3104--Drying(Binary Search)
- 带WIFI模块布局布线要点。
- group by 分组
- CTF之MD5
- Python:Selenium Chrome无弹窗+property/attribute/text
- hallo world
- 将变量做为一个对象的key,push新增进一个数组
- Oracle中查询当前数据库中的所有表空间和对应的数据文件语句命令
- 【小程序】微信小程序打开其他小程序(打开同一主体公众号下关联的另一个小程序)
- Visual Studio 2010生成解决方案时,导致C盘空间越来越小
热门文章
- 数据结构C语言实现
- C#后台获取根路径
- 调用Consul服务(消费服务)
- C# String相关
- 关于<;a>;<;/a>;标签里嵌套<;a>;<;/a>;标签的bug
- JS的部分部分疑问和小结
- SpringMVC学习(9):实现注解式权限验证
- 如何从零搭建一个webpack+react+redux+react-redux的开发环境一入门
- 2019-10-31-WPF-等距布局
- mysql基于Altas读写分离并实现高可用