XSS三种类型
- 存储型XSS:数据库中存在XSS攻击的数据,若数据未经过任何转义,返回给客户端。被浏览器渲染,就可能导致XSS攻击
- 反射型XSS:将用户输入的存在XSS攻击的数据,发送给服务端,服务端并未对数据进行存储,也未经过任何转义,直接返回给客户端。被浏览器渲染。就可能导致XSS攻击
- 纯粹发生在客户端的XSS攻击
XSS攻击演示
假设用户输入的参数为:
JavaScript代码
- <script>alert(xss)</script>
如果后台没有对该数据做任何过滤直接显示到前端<div>标签中的话,源代码就变成了这样:
JavaScript代码
- <div><script>alert(xss)</script><div>
那么在前端显示出来的是一个写着xss的弹窗,就发生了xss攻击
防御方案
我在项目中的主要的防御方案是对数据的过滤,对于数据中的危险字符进行相应的转义:
XML/HTML代码
- &----->&
- <-----><
- >----->>
- "----->"
- '----->'
- /----->/