前端 | 青训营笔记

112 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第7天,是关于《Web开发的安全之旅》的学习。

Web安全

安全问题很常见,就在身边。 会危害

  • 用户
  • 公司
  • 程序员

两个角度了解安全问题

  • 假如是hacker
  • 假如是开发者

1.Cross-Site Scripting(XSS)

盲目的信任用户的提交内容引起的

特点:

  • 通常难以从UI上感知(暗地执行脚本)
  • 窃取用户信息
  • 绘制UI,诱骗用户点击/填写表单

Stored XSS

  • 恶意脚本被存在数据库中
  • 访问页面 读数据 ===被攻击
  • 危害最大,对全部用户可见

Reflected XSS

  • 不涉及数据库
  • 从URL上攻击

DOM-based XSS

  • 不需要服务器的参与
  • 恶意攻击的发起+执行,全在浏览器完成

Mutation-based XSS

  • 利用了浏览器渲染DOM的特性(独特优化)
  • 不同浏览器,会有区别(按浏览器进行攻击)

CSRF Cross-site request forgery(跨站伪造请求)

  • 在用户不知情的前提下
  • 利用用户权限
  • 构造指定HTTP请求,窃取或修改用户敏感信息

SRF demo

  1. 用户没有访问银行页面
  2. 银行页面中的特定接口被请求
  3. 请求执行成功

最常见的就是GET请求,写个a标签设置href属性发送请求,或者图片的src属性发送请求

SQL Injection

1.png

例1

2.png

3.png

不对请求的数据做过滤的话,那就会造成无法估量的损失。

4.png

例2

5.png

6.png

当执行这条命令时,会删除服务器上的文件,使服务器直接宕机。

7.png

如果不过滤数据,被随意修改配置,会变成别人的攻击工具。

所以安全问题是个很严格的问题。

Denial of Service(DoS)

通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应。

正则 贪婪模式

8.png

9.png

恶意消耗服务器的资源,使响应时间上升,接口吞吐量下降。

Distributed DoS(DDoS)

短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致讨还规程,进而雪崩效应,无法响应新请求。

【不搞复杂,量大就完事】

攻击特点

  • 直接访问IP
  • 任意 API
  • 消耗大量带宽

例1

10.png

TCP有三次握手,只建立但不完成,恶意消耗资源。

传输层攻击

中间人攻击

11.png

  1. 明文传输
  2. 信息篡改不知道
  3. 对方身份未验证

防御篇

XSS

永远不能信任用户的提交内容,永远不要将用户提交的内容直接转换成DOM,应该直接当成字符串。

同源策略

浏览器的同源策略

同源策略是一个重要的安全策略,它用于限制一个origin的文档或者它加载的脚本如何能与另一个源的资源进行交互。它能帮助阻隔恶意文档,减少可能被攻击的媒介。

  • 协议一致
  • 域名一致
  • 端口一致

CSRF的防御(跨站伪造请求)

12.png

CSRF--token防御

13.png

CSRF anti-pattern

不能偷懒,是什么请求就对应什么接口

14.png