安全性问题|青训营笔记

98 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第4天

安全性问题

安全性问题很常见:

  • 用户(丢失隐私)
  • 公司(损失利益)
  • 程序员(丢失工作)

从两个方面看待安全性问题

攻击者角度——假如你是一个hacker

XSS攻击:

第一种也是最常见的攻击方式XSS(Cross-Site Scripting)
XSS主要利用两方面内容去进行攻击:
  1. 作为工程师的我们盲目信任用户提交的数据
  2. 作为前端工程师,直接把用户提交的字符串转化为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

injection beyond SQL

Regex DoS