定义
Web 安全是指保护 Web 应用程序和用户免受各种网络攻击的一系列措施和技术。它涵盖了从客户端到服务器端的各个方面,旨在确保数据的机密性、完整性和可用性。
核心特点
- 多层面防御:Web 安全涉及多个层面,包括前端、后端、网络和基础设施。
- 持续演进:Web 安全威胁不断演变,需要持续更新和改进防御措施。
- 风险管理:Web 安全需要对风险进行评估和管理,以确定优先级和采取适当的措施。
- 用户意识:用户是 Web 安全的重要组成部分,需要提高用户的安全意识,防止钓鱼攻击和社会工程学攻击。
分类
- 客户端安全:🔥
- XSS (Cross-Site Scripting)
- CSRF (Cross-Site Request Forgery)
- Clickjacking(点击劫持)
- 浏览器安全机制
- 服务端安全:
- SQL 注入
- 命令注入
- 文件上传漏洞
- 身份验证和授权
- 网络安全:
- DDoS 攻击
- 中间人攻击
- 协议漏洞
应用(前端)🔥
- 防止 XSS 攻击:通过输入验证、输出编码和 CSP 等方式,防止 XSS 攻击。
- 防止 CSRF 攻击:通过 Token 验证、SameSite Cookie 等方式,防止 CSRF 攻击。
- 保护用户数据:通过 HTTPS 加密传输数据,防止数据被窃听。
- 防止 SQL 注入:通过参数化查询和输入验证,防止 SQL 注入攻击。
- 防止命令注入:避免执行外部命令,或者对输入进行严格的验证。
- 安全地使用 JWT:
- 使用 HTTPS 传输 JWT,防止 JWT 被窃听。
- 将 JWT 存储在 Cookie 中,并设置 HttpOnly 标志,防止 XSS 攻击。
- 定期更换 JWT 的密钥,防止 JWT 被长期滥用。
参见:Web安全问题
优缺点
- 优点:
- 保护 Web 应用程序和用户免受攻击。
- 提高用户信任度和满意度。
- 符合法律法规要求。
- 缺点:
- 需要投入大量资源进行安全开发和维护。
- 可能会影响 Web 应用程序的性能和用户体验。
- 安全措施可能会被绕过。
相关概念
补充:前端开发实践中的安全建议
- 避免 eval、new Function、with 等危险语法
- 对所有输入进行白名单校验
- 上传文件时检查 MIME 类型和后缀
- 表单中隐藏字段不可作为安全依据
- 使用 HTTPS,避免明文传输 Cookie、Token
问答卡片
总结
Web 安全不是后端的专利,前端工程师必须具备扎实的安全意识。即使不涉及具体的加密算法实现,也需要理解攻击原理、常见防御手段、浏览器安全机制,才能写出「不作死」的代码。
Web 安全知识清单
安全类型 | 前端是否负责 | 是否面试常考 | 是否必须掌握 |
---|---|---|---|
XSS | ✅ 主动防御 | ✅ 高频 | ✅ 必须 |
CSRF | ⚠️协作防御 | ✅ 高频 | ✅ 必须 |
Clickjacking | ⚠️ 配合设置 | ⛔️ 低频 | ✅ 必须 |
依赖漏洞 | ✅ 维护更新 | ⛔️ 低频 | ✅ 必须 |
CORS 理解 | ✅ 主动掌握 | ✅ 常考 | ✅ 必须 |
URL 重定向 | ✅ 主动验证 | ⛔️ 较少 | 🔶 推荐 |
Token 存储安全 | ✅ 主动设计 | ✅ 高频 | ✅ 必须 |
浏览器安全机制 | ✅ 理解为主 | ✅ 高频 | ✅ 必须 |