这是我参与「第四届青训营 」笔记创作活动的的第4天
安全性问题
安全性问题很常见:
- 用户(丢失隐私)
- 公司(损失利益)
- 程序员(丢失工作)
从两个方面看待安全性问题
攻击者角度——假如你是一个hacker
XSS攻击:
第一种也是最常见的攻击方式XSS(Cross-Site Scripting)
XSS主要利用两方面内容去进行攻击:
- 作为工程师的我们盲目信任用户提交的数据
- 作为前端工程师,直接把用户提交的字符串转化为DOM
XSS的一些特点:
- 通常难以从UI上获得感知
- 窃取用户的信息(cookie/token)
- 绘制UI(如弹窗),诱骗用户点击/填写表单
XSS的分类:
Stored XSS(读取型XSS)
- 恶意脚本被存在数据库中
- 访问页面-读数据===被攻击
- 危害最大,对全用户可见
Relected XSS(反射型XSS)
- 不涉及到数据库
- 从URL上攻击
DOM-based XSS
- 不需要服务端的执行
- 恶意攻击的发起+执行,全在浏览器上完成
mutation-based XSS
- 利用浏览器渲染DOM的特性(独特优化)
- 不同浏览器各有不同(按浏览器攻击)
Cross-site request forgery(CSRF)
- 在用户不知情的情况下
- 利用用户的权限(cookie)
- 构造指定的HTTP请求,窃取或修改用户的敏感信息
SQL 注入
SSRF
- 请求【用户自定义】的Callback URL
- web Server 通常有内网访问权限
DoS
通过某种方式,导致浏览器被显著消耗,来不及响应更多请求,导致请求挤压,导致雪崩效应
中间人攻击
- 明文传输
- 信息篡改不可知
- 对方身份未验证
防御篇(加入你是一个防御者)
XSS:
- 永远不要信任用户发送的信息
- 永远不要将用户提交的内容转化为DOM
CSP:
- 哪些源(域名)被认为是安全的
- 来自源的可以执行,否则直接报错
- 对eval+inline script 拒绝
针对CSRF的攻击:
- sameSite
- CORS