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

123 阅读2分钟

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

Web安全一窥

在前端的网页开发中,安全问题十分常见。这些问题如果不得到重视与解决,将会危害:

  • 用户(使得用户的隐私遭到泄露)
  • 公司(使得公司的数据遭到破坏)
  • 程序(使得程序员生涯提早结束)

Web安全之攻击篇

Cross-Site Script(XSS)

跨站脚本攻击是最常见的一种攻击方式。攻击者会利用某种方式将恶意脚本注入网页。当用户访问页面时,就会导致恶意脚本执行,从而对用户造成损害。

  • XSS原理: 开发者盲目信任用户提交内容 + 直接将用户提交字符串转换为DOM。
  • XSS特点: 通常难以从UI上感知;会窃取用户信息;绘制UI,诱骗用户点击/填写表单。

Stored XSS(存储型)

特点:

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

Reflected XSS

特点:

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

Demo:

host/path/?param=<script>alert('123')</script>
public async render(ctx) {
    const { param } = ctx.query;
    ctx.status = 200;
    ctx.body = `<div>${param}</div>`;
}

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

QQ截图20220801224130.png

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

QQ截图20220801224205.png

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

QQ截图20220801224258.png

注入(Injection)

最常见的有SQL注入。

image.png

拒绝服务 Denial of Service(DOS)

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

Distributed DoS(DDoS)

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

攻击特点:

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

Web安全之防御篇

Cross-site Scripting(XSS)--> 跨站脚本攻击

防御策略:

  • 永远不要相信用户提交的数据
  • 现在前后端的主流框架已默认支持防御xss攻击

image.png

CSRF的防御

image.png

image.png

总结

Web安全在开发中是至关重要的。开发过程中要注意代码的安全性,这样才是对自己,对用户,对公司负责。