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

70 阅读2分钟

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

1 XSS(Cross-Site Scripting)

攻击

特点:

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

demo:

Stored XSS

Reflected XSS

不涉及数据库,从URL上进行攻击

DOM-based XSS

不需要服务器参与;

恶意攻击的发起+执行,全在浏览器完成

Mutation-based XSS

利用了浏览器渲染DOM的特性(独特优化)

不同浏览器,会有区别(按浏览器进行攻击)

防御

【用户需求】必须动态生成 DOM 🤐😰😩

1 🧨string->DOM

调用new DOMParser();

2 🧨上传svg

扫描svg文件

3 🧨Blob动态生成script (尽量不要让用户自定义跳转)

过滤!

4 🧨自定义样式

2 CSRF(Cross-site request forgery)

攻击

在用户不知情的前提下

利用用户权限(cookie)

构造指定HTTP请求,窃取或修改用户敏感信息

防御

↑不要偷懒~

·依赖Cookie的第三方服务怎么办?

·内嵌一个x站播放器,识别不了用户登录态,发不了弹幕😂

Set-Cookie: SameSite=None; Secure;

3 Injection

攻击

SQL Injection

其他lnjection:

CLl

os command

Server-Side Request Forgery(SSRF),服务端伪造请求。严格而言,SSRF 不是injection,但是原理类似

防御

SQL:

非SQL:

4 DoS (Denial of Service)

显著消耗服务器资源,雪崩

5 传输层-中间人

攻击

防御

HTTPS的特性:

~可靠性:加密——避免明文

~完整性:MAC验证——确保信息不被篡改

~不可抵赖性:数字签名——双方身份可被信任

HTTPS流程:(TLS 1.2)

HSTS

SRI

总结

  • 安全无小事

  • 使用的依赖(npm package,甚至NodeJS)可能成为最薄弱的一环

  • 虚心学习

参考

一文搞懂TCP的三次握手和四次挥手_不脱发的程序猿的博客-CSDN博客_三次握手和四次挥手

【前端专场 学习资料四】第五届字节跳动青训营 - 掘金

Web 开发安全(有课程资料)