Web安全开发 | 青训营笔记

136 阅读2分钟

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

常见安全攻击的方式

Cross-Site-Scripting(XSS)

定义:攻击者通过将自己的script脚本注入至页面,从而实现数据窃取等操作。

Snipaste_2022-08-13_10-24-30.jpg XSS的特点:

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

Snipaste_2022-08-13_10-27-22.jpg

添加恶意脚本

Snipaste_2022-08-13_10-27-55.jpg

Stored XSS

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

Reflected XSS

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

通过提交URL的时候获取字段

image.png

DOM-based XSS

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

这一次恶意脚本是在浏览器中

Snipaste_2022-08-13_10-33-40.jpg

Cross-site request forgery(CSRF)

恶意页面伪造成用户来访问其他页面使用服务

image.png

SQL Injection

定义:通过请求的过程中,将sql命令注入至数据库中,获取或修改数据库中的数据

image.png

读取请求字段,直接以字符串的形式拼接SQL语句

image.png

image.png

Denial of Service(DOS)

定义:通过某种方式,导致服务器资源被显著消耗,来不及响应更多请求,从而引起雪崩效应

Distributed Dos(DDOS)

定义:短时间内,来自大量的僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效,无法响应新请求
特点

  • 直接访问IP
  • 任意Api
  • 消耗大量带宽(直至耗尽)

image.png

中间人攻击

原理:浏览器和服务器的通信是通过一个中间媒介进行传输的,而双方都以为对方是浏览器或者服务器,中间人可以是恶意Web页面|路由器|ISP,可以在通信时窃取信息,修改请求。

防御措施

XSS

将数据存储在data中,而不是dom中

image.png

利用前端提供的现成工具来实现

  • 前端主流框架是默认防御XSS
  • Google-closure-library
  • 部署的时候可以使用DOMPurify将代码进行编译

Content Security Policy(CSP)

  • 自定义安全的域名(源)
  • 只有来自安全源的脚本是可以执行的,否则直接抛错

image.png

CSRF的防御

CSRF--token

image.png 用户绑定:攻击者也可以是注册用户===可以获取自己的token 过期时间:【前向保密】

CSRF--Iframe

image.png