定义

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 存储安全✅ 主动设计✅ 高频✅ 必须
浏览器安全机制✅ 理解为主✅ 高频✅ 必须

参考资料