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