Web 开发的安全之旅| 青训营笔记

81 阅读1分钟

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

两个角度看web安全

假如你是一个hacker——攻击者 假如你是一个开发者——防御

攻击篇

Cross-Site Scripting XSS

QQ截图20220801223544.png

QQ截图20220801223720.png

XSS的一些特点

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

xss demo

public async submit(ctx) {
    const { content,id } = ctx.request.body
    //没有对content过滤
    await db.save({
        content,
        id
    })
}
​
public async render(ctx){
    const { content } = await db.query({
        id:ctx.query.id
    })
    //没有对content过滤
    ctx.body = `<div>${content}</div>`
}

可以提交恶意版本

//提交的时候
fetch("/submit",{
    body:JSON.stringfy({
        id:"1",
        content:`<script>alert("XSS");</script>`
    })
})
​
//读取
ctx.body = `
    <div>
        <script>alert("XSS");</script>
    </div>
`

存储型XSS (Stored XSS)

刚才演示的demo就属于存储型XSS攻击方式,就是把恶意代码存储在数据库中

存储型XSS有以下几个特点

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

反射型XSS(Reflected XSS)

反射型的XSS就不会设计数据库,是直接从url上进行攻击

基于DOM的XSS攻击方式(DOM-based XSS)

QQ截图20220801224130.png

基于mutation的XSS攻击(mutation-based XSS)

QQ截图20220801224205.png

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

QQ截图20220801224258.png

构造get请求(CSRF-GET)

构造post请求(CSRF-beyond GET)

注入攻击(Injection)

QQ截图20220801224430.png

Distributed DDoS

短时间内,来自大量的将是设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应

攻击特点:

直接访问IP.

任意API

消耗大量带宽(耗尽)