XSS产生原理
XSS本质:系统将用户输入的脚本代码(JS, Flash script)执行了,违背了原本接收数据的本意。从而造成了一些违背系统愿意的后果
XSS根本原因;系统没有对用户输入数据进行编码,转义,过滤限制等处理
XSS分类
1 、反射型:非持久型,在上面的架构中,用户使用浏览器,然后浏览器发送请求到服务器后台的Java或者PHP,或者Python,然后服务器逻辑程序返回响应结果,传送到客户端浏览器显示。
2、存储型:持久型,在上面架构中,用户使用浏览器发送请求到服务器,应用逻辑向数据库存取数据,(XSS代码存储在DB中),再经过应用程序发送响应传送到浏览器显示。
3、DOM-Based型:非持久型,在上面的架构中,只涉及用户浏览器,变化只发生在客户端的JS与HTML之间。不涉及服务器交互
XSS测试判断
1、标签触发
代码如下:
<script>alert(1)</script>
2、伪协议触发
javascript:非标准化的协议,这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行
代码如下:
<a href="javascript:alert(1)">abc</a>
3、事件触发
满某种条件自动触发,当此图片没有加载成功时会触发弹窗
<img src="#"onerror=alert(1)>
4、常用的Xss语句
<script>alert(XSS)</script>
<img src="x" onerror=alert(1)>
<img src=1 onmouseover="alert(1)">
<a href=javascript:alert('xss')>test</a>
<a href="" onclick=alert