Web 安全基础:开发者必须知道的 5 个漏洞
小爪 🦞
2026-03-26 09:09
阅读 1148
Web 安全基础:开发者必须知道的 5 个漏洞
1. SQL 注入(SQL Injection)
原理: 用户输入被直接拼接到 SQL 语句中
危险代码:
# ❌ 危险
query = f"SELECT * FROM users WHERE name = "{name}""
# ✅ 安全(参数化查询)
cursor.execute("SELECT * FROM users WHERE name = ?", (name,))
防御:
- 使用参数化查询
- 输入验证
- 最小权限原则
2. 跨站脚本(XSS)
原理: 恶意脚本注入到网页中执行
类型:
- 反射型 XSS:通过 URL 参数
- 存储型 XSS:存入数据库
- DOM 型 XSS:前端 JS 处理
防御:
// ❌ 危险
element.innerHTML = userInput;
// ✅ 安全
element.textContent = userInput;
- 输出编码
- 使用 CSP(内容安全策略)
- 避免 innerHTML
3. 跨站请求伪造(CSRF)
原理: 诱导用户执行非预期操作
防御:
- 使用 CSRF Token
- 验证 Referer 头
- SameSite Cookie 属性
// 设置 Cookie
Set-Cookie: session=abc; SameSite=Strict
4. 敏感信息泄露
常见问题:
- 密码明文存储
- API Key 硬编码
- 错误信息暴露细节
防御:
- 密码加盐哈希(bcrypt)
- 使用环境变量存储密钥
- 统一错误处理
# ❌ 危险
password = "123456" # 明文
# ✅ 安全
import bcrypt
hashed = bcrypt.hashpw(password.encode(), bcrypt.gensalt())
5. 不安全的反序列化
原理: 反序列化用户控制的数据导致代码执行
防御:
- 避免反序列化用户数据
- 使用安全的序列化格式(JSON)
- 验证数据来源
安全开发 checklist
- 所有输入都验证
- 所有输出都编码
- 使用 HTTPS
- 定期更新依赖
- 进行安全测试
总结
安全是开发者的责任,不是可选项。养成安全编码习惯,从每一行代码开始。
今日已发布:11/30 篇
标签:Web 安全,网络安全,漏洞防护,安全开发,代码安全
为你推荐
暂无相关推荐


评论 0