这是我参与「第五届青训营 」伴学笔记创作活动的第 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 开发安全(有课程资料)