javascript - 尝试实现 CSRFProtector 失败并且令牌未生成或相同
问题描述
我正在实施 OWASP 网站上引用的 CSRFProtector (mebjas CSRF-Protector-PHP)。
我按照这个库的说明进行操作。在所有 PHP 文件中,我都包含了该csrfprotector.php
文件并调用了csrfProtector::init()
. 对于 JavaScript,我csrfprotector.js
在页面的 HTML 中包含了一次文件并调用
window.addEventListener("DOMContentLoaded", function() {
csrfprotector_init();
}
当我提交表单时,我发现 csrfprotector 无法验证令牌是否相同。我已经修改了 CSRF 以打印出 SESSION 和 POST 变量,所以当我访问该页面时,PHP 通过 init() -> authorisePost() 回显了以下内容。
post: {"anticsrf":false, ...}
session: []
403 Access Forbidden by CSRFProtector!
我观察到使用开发人员工具时,我的 cookie 中没有添加任何 anticsrf 令牌。
因为我想知道为什么没有创建令牌,所以我修改了脚本以不运行 authorisePost 而是运行 refreshToken() 并且我每次都得到令牌,但它们是不同的。
post: {"anticsrf":"5ec0ae33dc", ...}
session: {"anticsrf":"cbf30a7d6b", ...}
403 Access Forbidden by CSRFProtector!
我观察到使用开发人员工具,Cookies 中的 anticsrf 令牌就是14dd3db17f
这种情况。
我可以做些什么来解决我的问题来自哪里,或者我错过了什么?谢谢。
解决方案
推荐阅读
- javascript - 在 JavaScript / TypeScript 中使循环有点异步 / 等待
- angular - Angular2 +在输入时更改电子邮件输入值不起作用
- r - 将两个文件与两个重叠个人子集的年度二进制数据合并的问题
- android - Android Studio:变量意图可能尚未初始化
- java - 为什么从 Java 中的 unix 时间戳中获取错误的星期显示名称
- php - 检查关联数组中的给定键是否有值
- ios - 优化方法数组比较以获取最接近特定 CGFloat 的项目:加快构建速度
- python - 超出最大递归深度:我该如何解决这个问题
- javascript - 当他们自己的 PDF.js 只呈现到画布或 svg 时,firefox 如何实现将 PDF 呈现为 HTML?
- python - 图像的 3D 旋转无法按预期工作