当前位置: 首页 > news >正文

前端常见安全问题都有哪些以及解决方案

前端常见的安全问题主要集中在 输入、数据传输、存储、接口调用 等环节。下面我分门别类给你整理常见问题及对应的解决方案:


🔒 一、常见前端安全问题

1. XSS(跨站脚本攻击)

  • 场景:恶意用户输入 <script>alert(1)</script>,被页面直接渲染执行。

  • 危害:窃取 Cookie、会话信息、页面劫持、钓鱼攻击。

  • 解决方案

    • 转义输出:对 HTML、JavaScript、CSS、URL 输出时进行编码(如 &lt; 替代 <)。

    • CSP(内容安全策略):限制资源加载来源,禁止内联脚本。

    • HttpOnly Cookie:防止 JS 读取 Cookie。

    • 使用成熟库(如 React/Vue)默认会转义输出,除非 v-html / dangerouslySetInnerHTML 需谨慎使用。


2. CSRF(跨站请求伪造)

  • 场景:用户已登录 A 网站,攻击者诱导点击恶意链接,浏览器会自动带上 Cookie 发起请求。

  • 危害:在用户不知情的情况下执行转账、改密码等操作。

  • 解决方案

    • CSRF Token:服务端生成 Token,前端请求时带上并校验。

    • SameSite Cookie:设置 SameSite=Strict/Lax 限制跨站点 Cookie 自动携带。

    • 双重验证:关键操作要求输入密码/短信验证码。


3. 点击劫持(Clickjacking)

  • 场景:攻击者在一个透明 iframe 中嵌入目标网站,引诱用户点击。

  • 危害:用户在不知情的情况下执行敏感操作。

  • 解决方案

    • 响应头设置:X-Frame-Options: DENY 或 SAMEORIGIN

    • 使用 CSP: frame-ancestors 'self' 限制页面被嵌入。

    • 前端可检测是否在 iframe 中(if (window.top !== window.self)),并阻止渲染。


4. 敏感信息泄露

  • 场景:前端代码中暴露了 API Key、密钥、调试信息。

  • 危害:攻击者获取后可直接调用后端接口。

  • 解决方案

    • 不要在前端存放敏感信息(密钥、数据库连接)。

    • 使用 环境变量 + 服务器代理

    • 生产环境关闭 console.logsourceMap,避免泄露源码。


5. 不安全的存储(本地存储 / Cookie)

  • 场景:将 Token 存在 localStorage 或非 HttpOnly Cookie 中。

  • 危害:一旦发生 XSS,Token 可能被窃取。

  • 解决方案

    • 优先使用 HttpOnly + Secure Cookie 存储 Token。

    • 必须用 localStorage/sessionStorage 时,结合短期 Token + Refresh Token 机制。


6. 中间人攻击(Man-in-the-Middle, MITM)

  • 场景:未加密的 HTTP 传输被拦截篡改。

  • 危害:用户数据泄露或被篡改。

  • 解决方案

    • 使用 HTTPS

    • 开启 HSTS(HTTP Strict Transport Security),强制浏览器使用 HTTPS。


7. 接口越权(前端访问控制不严)

  • 场景:前端只在 UI 上隐藏了按钮,但接口仍可被恶意调用。

  • 危害:低权限用户可以调用高权限接口。

  • 解决方案

    • 后端必须做权限校验,前端只做辅助。

    • 接口区分角色,避免通过参数直接访问他人资源。


8. 依赖库漏洞

  • 场景:引入的第三方库(npm 包、CDN 资源)存在漏洞。

  • 危害:攻击者通过供应链攻击劫持前端。

  • 解决方案

    • 使用 npm audit、Snyk 定期扫描依赖漏洞。

    • 使用 Subresource Integrity (SRI) 校验外部资源完整性。

    • 锁定依赖版本,避免被投毒。


9. 开放式重定向

  • 场景:前端参数控制跳转地址 redirect=http://evil.com

  • 危害:被用于钓鱼、跳转到恶意网站。

  • 解决方案

    • 校验跳转地址,限制白名单域名。

    • 不直接使用用户输入作为跳转目标。


10. 跨域问题(CORS 配置不当)

  • 场景:后端 Access-Control-Allow-Origin: *

  • 危害:任意网站可读取用户敏感数据。

  • 解决方案

    • 后端配置 精确域名白名单,不要用 *

    • 对跨域请求要求鉴权。


✅ 总结

前端安全问题常见的类别及核心解决思路:

  • XSS → 转义 & CSP

  • CSRF → Token & SameSite

  • 点击劫持 → X-Frame-Options & CSP

  • 敏感信息 → 不放前端 & 关闭调试信息

  • 存储风险 → HttpOnly Cookie

  • MITM → HTTPS & HSTS

  • 接口越权 → 后端校验

  • 依赖漏洞 → SRI & npm audit

  • 开放式重定向 → 白名单

  • CORS 配置 → 精确控制


http://www.dtcms.com/a/409968.html

相关文章:

  • 算法专题(三)01背包问题理论
  • pycharm 运行不报错,但是调试报错,
  • 原型模式了解
  • 基于hive和mapreduce的地铁数据分析及可视化_hive作为数据库
  • 使用虚幻引擎(UE5)制作开箱爆金币功能
  • 网站在线考试答题系统怎么做泰兴网页定制
  • 展示型商城订单网站建设网页设计网站方案
  • 【MySQL数据库】InnoDB实现MVCC(多版本并发控制)底层原理
  • 自己做网站推广关键词网站开发和合同
  • 【Qt开发】输入类控件(二)-> QTextEdit
  • 攻克音频顽疾:基于QCC3095/QCC5181/QCC3040实现全域无冲击声的实战分享
  • 视频融合平台EasyCVR构筑智慧交通可视化管理与智能决策中枢
  • 从特征到应用:用 dlib+OpenCV 实现实时疲劳检测(基于眼睛纵横比)
  • 【买机器人,上BFT】北京大学联合项目 论文解读 | H2R:一种用于机器人视频预训练的人机数据增强技术
  • 音频库管理在数字媒体中的应用探索
  • BLE配网协议 - 分包、组包和重传功能指南
  • MediaHuman YouTube to MP3 多语便携版:高效音频提取工具
  • Java 数组的定义与使用
  • 自建站有哪些站点wordpress前台压缩图片
  • R语言中的获取函数与替换函数
  • 微前端中iframe集成方式与使用微前端框架方式对比
  • 【NOI】在信奥赛中 什么是函数交互题?
  • 电脑上怎么做网站963中华室内设计网
  • Python调用优云智算安装的ComfyUI服务器
  • ACA云原生工程师认证知识点脑图
  • 用 Flink 打造事件驱动流式应用从 DataStream 到 ProcessFunction
  • MySQL学习笔记05:MySQL 索引原理与优化实战指南
  • 【提示工程】Ch2(续)-提示技术(Prompt Technique)
  • 嵌入式软件知识点汇总(day2)
  • QT中QStackedWidget控件功能及应用