0

0

前端安全_CSRF防护JavaScript实现

夢幻星辰

夢幻星辰

发布时间:2025-11-30 19:13:31

|

576人浏览过

|

来源于php中文网

原创

csrf防护需前后端协同,前端可通过samesite cookie、自定义请求头、同步token及双重cookie提交等措施辅助防御,核心在于配合后端实现安全策略。

前端安全_csrf防护javascript实现

CSRF(Cross-Site Request Forgery,跨站请求伪造)是一种常见的前端安全漏洞,攻击者诱导用户在已登录的状态下执行非本意的操作。虽然主要防护应在后端实现,但前端可以通过一些手段配合提升安全性。以下是基于 JavaScript 的常见 CSRF 防护实践与实现方式。

理解CSRF攻击原理

CSRF 利用用户在目标网站的认证状态,通过第三方站点发起伪造请求。例如:用户登录了银行系统,未退出的情况下访问恶意网站,该网站自动提交一个转账请求到银行系统,而浏览器会自动携带用户的 Cookie,导致请求被合法执行。

关键点在于:攻击者无法获取用户的 Cookie,但可以利用浏览器自动携带 Cookie 的机制发起请求。

前端可参与的防护措施

虽然 CSRF 防护的核心逻辑通常由后端完成,前端仍可通过以下方式协助防御:

立即学习Java免费学习笔记(深入)”;

1. 使用 SameSite Cookie 属性(推荐)

设置 Cookie 的 SameSite 属性为 StrictLax,可有效阻止跨站请求携带 Cookie。

示例(由服务端设置):

Set-Cookie: session=abc123; Path=/; Secure; HttpOnly; SameSite=Lax

前端虽不能直接设置此属性,但应确保与后端协作启用该策略。

2. 添加自定义请求头(如 X-Requested-With)

前端在发送敏感请求时,添加自定义请求头(如 X-Requested-With: XMLHttpRequest),后端校验该头是否存在。

使用 fetch 示例:

fetch('/api/transfer', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'X-Requested-With': 'XMLHttpRequest'
  },
  body: JSON.stringify({ to: 'user2', amount: 100 })
})

后端需检查该头,若缺失则拒绝请求。注意:此方法依赖同源策略,防止第三方脚本伪造该头。

Shoping购物网源码
Shoping购物网源码

该系统采用多层模式开发,这个网站主要展示女装的经营,更易于网站的扩展和后期的维护,同时也根据常用的SQL注入手段做出相应的防御以提高网站的安全性,本网站实现了购物车,产品订单管理,产品展示,等等,后台实现了动态权限的管理,客户管理,订单管理以及商品管理等等,前台页面设计精致,后台便于操作等。实现了无限子类的添加,实现了动态权限的管理,支持一下一个人做的辛苦

下载
3. 同步 Token 模式(Synchronizer Token Pattern)

后端生成一次性 Token,嵌入页面(如隐藏字段或 meta 标签),前端在请求中携带该 Token,后端验证其有效性。

实现步骤:

  • 后端渲染页面时注入 Token:
<meta name="csrf-token" content="abc123xyz">
  • JavaScript 读取并附加到请求头:
const token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');

fetch('/api/delete', {
  method: 'DELETE',
  headers: {
    'X-CSRF-Token': token,
    'Content-Type': 'application/json'
  }
})

后端对比 Token 是否匹配,防止重放和伪造。

4. 双重 Cookie 提交(Double Submit Cookie)

前端在请求中额外添加一个与 Cookie 中相同的 Token 字段,后端比对两者是否一致。

流程:

  • 后端在 Set-Cookie 时写入 csrf-token=abc123
  • 前端读取该 Cookie(需非 HttpOnly),并在请求体或头中再次发送

示例(使用 axios):

// 假设从 Cookie 获取 token
const csrfToken = getCookie('csrf-token');

axios.post('/api/action', { 
  data: 'example', 
  csrfToken // 请求体中包含
});

后端验证请求中的 token 与 Cookie 中的一致性。此方法无需服务器存储 Token,适合分布式系统。

避免常见误区

前端不应单独依赖 Referer 或 Origin 头进行判断,这些信息可能被篡改或缺失。真正的验证必须由后端完成。

不要将敏感操作绑定在 GET 请求上,避免链接被恶意调用。

静态资源托管站点更需警惕,即使无登录态,若用户处于同一浏览器环境,仍可能受攻击影响。

基本上就这些。前端能做的有限,关键是与后端协同,确保 Token 机制或 SameSite 策略落地。安全是全链路的事,JavaScript 不是主角,但也不能缺席。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
什么是分布式
什么是分布式

分布式是一种计算和数据处理的方式,将计算任务或数据分散到多个计算机或节点中进行处理。本专题为大家提供分布式相关的文章、下载、课程内容,供大家免费下载体验。

404

2023.08.11

分布式和微服务的区别
分布式和微服务的区别

分布式和微服务的区别在定义和概念、设计思想、粒度和复杂性、服务边界和自治性、技术栈和部署方式等。本专题为大家提供分布式和微服务相关的文章、下载、课程内容,供大家免费下载体验。

249

2023.10.07

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6496

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

367

2023.11.23

阻止所有cookie什么意思
阻止所有cookie什么意思

阻止所有cookie意味着在浏览器中禁止接受和存储网站发送的cookie。阻止所有cookie可能会影响许多网站的使用体验,因为许多网站使用cookie来提供个性化服务、存储用户信息或跟踪用户行为。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

441

2024.02.23

cookie与session的区别
cookie与session的区别

本专题整合了cookie与session的区别和使用方法等相关内容,阅读专题下面的文章了解更详细的内容。

97

2025.08.19

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

6537

2023.09.14

登录token无效怎么办
登录token无效怎么办

登录token无效的解决办法有检查Token是否过期、检查Token是否正确、检查Token是否被篡改、检查Token是否与用户匹配、清除缓存或Cookie、检查网络连接和服务器状态、重新登录或请求新的Token、联系技术支持或开发人员等。本专题为大家提供token相关的文章、下载、课程内容,供大家免费下载体验。

840

2023.09.14

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

1

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
小皮面板使用视频教程
小皮面板使用视频教程

共30课时 | 20.4万人学习

CSS3 教程
CSS3 教程

共18课时 | 6.6万人学习

Rust 教程
Rust 教程

共28课时 | 6.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号