跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

前端安全核心实践:XSS、CSRF 与依赖管理

前端安全核心实践 常见误区 前端安全?这不是后端的事吗? "我只是个前端,安全关我什么事?"——结果网站被 XSS 攻击,用户信息泄露; "我用了框架,应该很安全吧?"——结果框架有漏洞,被人轻松突破; "我的网站小,没人会攻击的"——结果被黑客当作练手的靶子。 前端安全不是可有可无的,而是必须重视的! 前端安全的重要性 **保护用户数据**:防止用户信息被窃取 **维护网站声誉**:避免安全事件…

字节跳动发布于 2026/4/6更新于 2026/9/250K 浏览

前端安全核心实践

常见误区

前端安全?这不是后端的事吗?

"我只是个前端,安全关我什么事?"——结果网站被 XSS 攻击,用户信息泄露; "我用了框架,应该很安全吧?"——结果框架有漏洞,被人轻松突破; "我的网站小,没人会攻击的"——结果被黑客当作练手的靶子。

前端安全不是可有可无的,而是必须重视的!

前端安全的重要性

  • 保护用户数据:防止用户信息被窃取
  • 维护网站声誉:避免安全事件影响品牌形象
  • 遵守法律法规:如 GDPR、CCPA 等数据保护法规
  • 防止业务损失:避免因安全问题导致的经济损失

常见错误示例

// 反面教材:直接拼接 HTML 字符串
function renderUserInput() {
  const userInput = document.getElementById('user-input').value;
  // 危险!直接将用户输入插入到 DOM 中
  document.getElementById('output').innerHTML = userInput;
}

// 反面教材:不安全的 API 调用
function login() {
  const username = document.getElementById('username').value;
  const password = document.getElementById('password').value;
  // 危险!在前端存储敏感信息
  localStorage.setItem('username', username);
  localStorage.setItem('password', password);
  // 危险!明文传输密码
  fetch('https://api.example.com/login', {
    method: 'POST',
    body: JSON.stringify({ username, password })
  });
}
// 反面教材:使用不安全的第三方库
{
  "dependencies": {
    "some-old-library": "1.0.0" // 存在已知安全漏洞
  }
}

安全实践建议

// 正确的做法:使用安全的 DOM 操作
function renderUserInput() {
  const userInput = document.getElementById('user-input').value;
  // 安全!使用 textContent 或 createElement
  document.getElementById('output').textContent = userInput;
  // 或者使用 DOMPurify 净化 HTML
  // const sanitizedInput = DOMPurify.sanitize(userInput);
  // document.getElementById('output').innerHTML = sanitizedInput;
}

// 正确的做法:安全的 API 调用
function login() {
  const username = document.getElementById('username').value;
  const password = document.getElementById('password').value;
  // 安全!使用 HTTPS 传输
  fetch('https://api.example.com/login', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ username, password })
  })
    .then(res => res.json())
    .then(data => {
      // 安全!使用 token 而不是存储密码
      localStorage.setItem('token', data.token);
    });
}

// 正确的做法:防止 CSRF 攻击
function submitForm() {
  // 获取 CSRF token
  const csrfToken = document.querySelector('meta[name="csrf-token"]').content;
  fetch('https://api.example.com/submit', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'X-CSRF-Token': csrfToken // 添加 CSRF token
    },
    body: JSON.stringify({ data: 'some data' })
  });
}
// 正确的做法:定期更新依赖
{
  "dependencies": {
    "some-library": "^2.0.0" // 使用最新版本,避免已知漏洞
  },
  "scripts": {
    "security": "npm audit" // 定期检查安全漏洞
  }
}
<!-- 正确的做法:实现内容安全策略 (CSP) -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self' https://trusted-cdn.com; style-src 'self' https://trusted-cdn.com; img-src 'self' https://trusted-cdn.com data:; connect-src 'self' https://api.example.com; frame-src 'none';">

总结

  • 输入验证:使用 textContent 或 DOMPurify 净化用户输入
  • HTTPS 传输:确保所有 API 调用使用 HTTPS
  • 敏感信息保护:不在前端存储密码等敏感信息
  • 依赖管理:定期更新依赖,避免已知安全漏洞
  • 内容安全策略 (CSP):限制资源加载来源,防止 XSS 攻击
  • CSRF 防护:使用 CSRF token 防止跨站请求伪造
  • 安全头部:设置适当的安全相关 HTTP 头部
  • 定期安全审计:使用工具检查代码中的安全漏洞

前端安全不是选择题,而是必答题!

目录

  1. 前端安全核心实践
  2. 常见误区
  3. 前端安全的重要性
  4. 常见错误示例
  5. 安全实践建议
  6. 总结

更多推荐文章

查看全部
  • LangChain 快速入门:从环境搭建到链式调用实战
  • Nginx 部署私有 Web 播放器配置指南
  • Node.js 在 Windows 11 上的安装及国内镜像源配置
  • 钉钉宜搭低代码方案:从快速搭建到深度定制的技术实践
  • 12 篇必读的大模型前沿论文
  • Python 语法基础与入门指南
  • 利用 Higress 将 REST API 转换为 MCP Server 工具
  • SpringBoot 无人机智能管控系统设计与实现
  • 基于 Higress MCP Server 插件转换 REST API 为 AI 工具
  • 企业级招聘数据采集:基于 Bright Data AI Studio 的自动化爬虫方案
  • 使用 Higress 将现有 REST API 转换为 MCP Server 工具
  • Python 豆瓣高分书籍推荐:从入门到进阶
  • OpenClaw 本地推理方案:基于 Ollama 部署开源模型替代云端 Token 消耗
  • 微软漏洞研究员谈从爱好到职业的挖洞经验与建议
  • 若依框架从 Spring Boot 2 升级到 Spring Boot 3 实战
  • 大模型的 6 项核心技术:Transformer、预训练与 RLHF 等
  • 国产十大实用 AI 大语言模型深度解析与选型指南
  • Llama-2-7b 在昇腾 NPU 上的部署与性能基准实测
  • OpenClaw 接入飞书:让 AI 机器人直接操作文档与表格
  • 开源模型 Mistral 与 Qwen Prompt 实验报告

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online