了解XSS和CSRF攻击
XSS 和 CSRF 介绍
在 Web 安全领域中,XSS 和 CSRF 是最常见的攻击方式。那么本文就带你认识一下 XSS 和 CSRF 的攻防问题。
XSS
概念:
XSS , 全称:Cross Site Scripting
,译为跨域脚本攻击。
原理:
不需要你做任何的登录验证,它会通过合法的操作 (比如在url
中输入、在评论框中输入),向用户的页面注入脚本 (可能是 js
、html
代码块等)。
防范:
1.编码:对于用户输入进行编码。
2.过滤:移除用户输入和事件相关的属性。(过滤 script
、style
、iframe
等节点)
3.校正:使用DOM Parse
转换,校正不配对的 DOM
标签。
4.使用 HttpOnly
。
分类:
- 反射性 (非持久):点击链接,执行脚本
- 存储型 (持久):恶意输入保存数据库,其他用户访问,执行脚本
- 基于
DOM
:而已修改DOM
结构,基于客户端
CSRF 攻击
概念:
CSRF , 全称:Cross-site request forgery
,译为跨站请求伪造。
原理:
登录受信任的网站 A ,并在本地生成
Cookie
。(如果用户没有登录网站 A,那么网站 B 在诱导的时候,请求网站 A 的api
接口时,会提示你登录)。在不登出 A 的情况下,访问危险网站 B (其实是利用了 网站 A 的漏洞)。
防范:
token
验证;- 隐藏令牌,把
token
隐藏在http
请求的head
中。 referer
验证,验证页面来源。
两者区别
- CSRF:需要用户先登录网站 A ,获取
cookie
。XSS:不需要登录而是通过注入脚本等方式。 - CSRF:是利用网站 A 本身的漏洞,去请求网站 A 的
api
。XSS:是向网站 A 注入JS
代码,然后执行JS
里的代码,篡改网站 A 的内容。