CSRF 令牌生成与验证模拟器 - 跨站请求伪造防护
同步器令牌模式演示:生成令牌嵌入表单,提交时验证,理解CSRF防护核心流程。
UD5工具箱
交互式演示授权码流程 (Authorization Code) 与 PKCE 扩展
👆 点击左侧步骤或使用下方控制按钮开始演示
授权码流程是 OAuth 2.0 中最经典、最安全的授权方式之一。它通过前端通道获取授权码,后端通道换取令牌的双通道机制来保障安全:
此流程适用于有后端服务的 Web 应用(如传统 MVC 应用、后端渲染的应用),因为需要安全存储 client_secret。
PKCE(读作 "pixy")是授权码流程的安全增强扩展,专为无法安全存储 client_secret 的公共客户端设计(如单页应用 SPA、移动 App、桌面应用)。
核心机制:
防护场景:在移动端或 SPA 中,恶意应用可能拦截回调 URL 中的授权码。但没有 code_verifier,攻击者无法完成令牌兑换。PKCE 有效防止了授权码拦截攻击。
它们之间的关系可以用以下公式表示:
code_challenge = Base64URL( SHA256( code_verifier ) )
PKCE 也支持 plain 模式(challenge = verifier),但强烈不推荐,应始终使用 S256 模式。
state 参数是一个随机生成的字符串,在授权请求中发送,授权服务器在回调时原样返回。它有两大作用:
最佳实践中,state 应该是不可预测的随机值,并应在使用后立即失效。
JWT 是一种紧凑的、URL 安全的令牌格式,由三部分组成,用点号 (.) 分隔:
eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiIxMjMifQ.signature_here
JWT 的内容可被任何人解码读取(Base64 不是加密),因此绝不能在 JWT 中存储敏感信息。安全性依赖于签名验证。
对于 SPA 和纯前端应用,推荐使用授权码流程 + PKCE(Authorization Code with PKCE),原因如下:
配合 BFF(Backend for Frontend) 架构或 Token Handler 模式,可以进一步提升 SPA 的安全性。
不可以。授权码是一次性的,使用后立即失效。这是 OAuth 2.0 安全模型的重要设计:
生成安全的 code_verifier 需要遵循以下规范(RFC 7636):
A-Z a-z 0-9 - . _ ~(即 Base64URL 字符集)。crypto.getRandomValues()),不可使用 Math.random()。本模拟器中使用 crypto.getRandomValues() 生成符合规范的随机 verifier,展示了最佳实践。
同步器令牌模式演示:生成令牌嵌入表单,提交时验证,理解CSRF防护核心流程。
模拟通过第三方身份提供商(如 Google)登录网站的完整 OAuth 2.0 授权码流程。
输入提交信息,立即检查是否符合 conventional commits 规范,给出修复建议。
使用CTAP2模拟器或安全密钥在浏览器中体验无密码注册与认证流程。
编写 ESLint 规则代码,输入测试用例,立即查看是否通过及报错信息。
自定义头像、姓名、部门等信息,生成虚拟员工ID卡,适合团队活动或内部展示。
选择编程语言,生成一份该语言的代码审查要点清单,包含性能、安全、可读性等。
定义颜色、间距等令牌,导出为 SCSS、CSS 自定义属性或 JavaScript 模块。
选择所在时区和典型工作时间,生成显示可用时段的徽章图片。
模拟服务端生成与校验CSRF令牌的完整过程,展示隐藏在表单与Session中的同步模式。
支持生成随机强密码、由单词组成的易记短语密码,以及排除容易混淆字符的密码。
粘贴Base64编码的PEM证书,解码并显示颁发者、有效期、公钥算法与指纹等信息。
动画展示环形/循环缓冲区的Enqueue、Dequeue操作以及头尾指针的移动逻辑。
输入域名和证书公钥哈希,模拟HPKP策略的配置与验证过程,理解其工作原理。
粘贴 package.json 中的 scripts 部分,模拟执行并预览串联命令和环境变量的效果。
模拟带音效和特效的开箱过程,随机获得不同皮肤的道具。
模拟跨站请求伪造攻击以及如何通过CSRF Token进行防护的流程演示。
通过回答几个简单问题,为您推荐合适的开源许可证(MIT、Apache、GPL等),并展示许可条款摘要。
生成由随机单词组成的口令短语,或自定义字符集强密码,实时显示强度。
生成简单数字或字母验证码图片,带干扰线和噪点,适合前端原型测试,不依赖服务端。
使用 Web Crypto API 生成自签名的 X.509 证书和密钥对,演示本地 HTTPS 证书原理。
上传基础图标,添加数字或红点角标,生成带提醒效果的动态Favicon SVG。
上传含经纬度的CSV,在静态地图或Leaflet上标出所有点。
逐步骤模拟SMTP握手:EHLO、MAIL FROM、RCPT TO、DATA,查看服务器响应。
可视化展示发布/订阅模式的运作,添加订阅者和发布者,查看事件流。
定义状态、字母表和转移规则,逐步执行图灵机,观察纸带内容变化。
使用示例翻译对演示翻译过程,了解机器翻译基本界面。
在网格上合理放置住宅、农场、市场等卡牌,满足相邻加成条件得分。
交互式向栈(后进先出)或队列(先进先出)添加删除元素,演示数据流变化。
在画布上放置并连接与、或、非门,切换输入观察输出。