- CSRF:跨站请求伪造
- XSS :跨域脚本攻击
CSRF
-
CSRF,通常称为跨站请求伪造,英文名Cross-site request forgery缩写CSRF
攻击原理:在B网站引诱用户访问A网站(用户之前登陆过A网站,浏览器cookie缓存了身份验证信息),调用A网站的接口攻击A网站。
必要条件:在A站登录过;A站接口有漏洞防御措施:
(1)token验证:登陆成功后服务器下发token令牌存到用户本地,再次访问时要主动发送token,浏览器只能主动发cookie,做不到主动发token
(2)referer验证:判断页面来源是否自己站点的页面,不是不执行请求
(3)隐藏令牌: 令牌放在http header头中,而不是链接中
XSS
- XSS:跨域脚本攻击(cross-site scripting)
- 不需要登陆认证,向你的页面通过合法渠道注入脚本(如onerror)
- 防御:令XSS无法执行(编码,过滤,校正)
- 编码:(不能对用户的所有输入保持原样,需要编码)对用户输入的数据进行HTML Entity编码;(ajax获取到后台发过来的数据,先反转义unescape,获取到DOM标签,然后对DOM内容进行解析校正HTMLParse,然后过滤)
- 过滤:(我们不能原样显示用户的任何输入,需要过滤)移除用户上传的DOM属性,如onerror等;移除用户上传的Style节点、Script节点、link节点、Iframe节点、frame节点、img节点等
- 校正:避免直接对HTML Entity解码;使用DOM Parse转换,校正不配对的DOM标签
CSRF与XSS的区别:
CSRF需要用户登录,利用网站自己的接口漏洞进行攻击
XSS通过注入脚本执行自己的代码