目的
攻击者往web页面插入恶意的可执行脚本(html,js),获取用户安全隐私(cookie),执行恶意请求(支付)
1.非持久型XSS
不经过服务器存储,直接通过get或者post请求,就能拿到隐私数据
需要诱骗用户点击
例子:
当页面含有获取url参数直接展示在页面时。
攻击者将参数修改为
alert(document.cookie)
防范:
页面的渲染所有内容尽量来自于服务端
不要用url,document.forms,直接渲染页面
对传入的字符串做转义
2.持久型XSS
一般存在于Form表单提交等交互功能。
例子:当提交评论
数据来源于后端数据库
防范:
前端后端做数据转义
如何防御xss
1.csp添加白名单,告诉浏览器哪些外部资源可以获取
2.转义字符
3.Httponly Cookie
3.CSRF
跨站请求伪造,利用用户已经登录的身份,在用户不知情的情况下,以用户名义进行非法操作。
例子:
当用户在已经登录状态中突然弹出链接引诱用户点击。
当用户点击之后直接拿到cookie进行转账操作
防范:
get请求不对数据修改
不让第三方访问cookie
阻止第三方的请求接口
请求附带验证信息
验证码
4.点击劫持
是一种视觉欺骗手段。
例子:
用iframe嵌套方式嵌入自己的网页,在页面中透出一个按钮诱导
用户点击,进行非用户意愿的操作
防范:
X-FRAME-OPTION
防御用iframe嵌套的点击劫持。
DENY:表示不允许iframe方式展示、
SOMEORIGIN:允许相同的域名下iframe展示
ALLOW-FROM:表示指定的来源展示iframe
Js防御
5.URL跳转漏洞
URL迷惑,将程序引导到不安全的第三方区域。
例子:
http://baidu.com?url=www.evil.com
Header头跳转
Javascript跳转
META跳转
防范:
referer限制
加入有效性的Token
6.SQL注入
利用漏洞,访问或修改数据库.
例子:
select * form user where name=‘admin–’ and password=‘xxx’
‘–’ 之后直接被注释了
防范:
给用户提供最小的权限
后端代码检查是否符合预期
对特殊字符串进行转义处理
查询语句参数化查询接口