XSS简介
xss就是攻击者在web页面插入恶意的Script代码,当用户浏览该页之时,嵌入其中web里面的Script代码会被执行,从而达到恶意攻击用户的特殊目的。
1. 反射型攻击
反射型XSS只是简单的把用户输入的数据“反射”给浏览器.也就是说需要诱使用户“点击”一个恶意链接,才能攻击成功。反射型XSS也叫作“非持久型XSS”
反射型XSS,是最常用的,使用最广的一种方式。通过给别人发送有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行。它的特点:是非持久化,必须用户点击带有特定参数的链接才能引起。
例子:假设一个页面把用户输入的参数直接输出到页面上:
<?php $input = $_GET["param"]; echo "<div>".$input."</div>"?>
正常访问
正常访问:http://demo.com?param="hello"
页面输出: hello
面源代码:<div>/This is a xss test!</div>
脚本注入攻击
攻击访问:http://demo.com?param=<script>alert(/This is a xss test!/)</script>
页面输出: alert函数被执行
页面源代码:<div><script>alert(/This is a xss test!/)</script></div>
2. 储存型XSS
储存型XSS会把用户输入的数据“储存”在服务器端。这种XSS具有很强的稳定性
存储型的攻击脚本被存储到了数据库或者文件中,服务端在读取了存储的内容回显了。就是存储型。这种情况下用户直接打开正常的页面就会看到被注入
流程如下:
坏人把恶意的XSS代码提交网站--->网站把XSS代码存储进数据库--->当页面再次被其他正常用户请求时,服务器发送已经被植入XSS代码的数据给客户端--->客户端执行XSS代码
3.DOM Based XSS
实际上,这种类型的XSS并非按照“数据是否保存在服务器端”来划分的,从效果上来说也是反射型XSS单独划分出来的,因为DOM Based XSS 的形成原因比较特别。这是由于客户端脚本自身解析不正确导致的安全问题。
xss的防御
现在的XSS如此流行,原因何在。我想大家应该都知道,就是在输入的时候没有做严格的过滤,而在输出的时候,也没有进行检查,转义,替换等
所以防范的方法就是,不信任任何用户的输入,对每个用户的输入都做严格检查,过滤,在输出的时候,对某些特殊字符进行转义,替换等