几乎所有关于反CSRF机制的文档都声明应该在服务器端生成CSRF令牌。不过,我想知道是否有必要。是否需要在服务器端生成反XSRF/CSRF令牌?
我想要实现反CSRF在下列步骤操作:
没有服务器端生成的CSRF令牌;
在浏览器端,在每个AJAX或表单提交中,我们的JavaScript会生成一个随机字符串作为标记。在实际的AJAX或表单提交发生之前,该令牌被写入cookie csrf;并将令牌添加到参数_csrf。
在服务器端,每个请求都应该有饼干CSRF,并提交论证_csrf。这两个值进行比较。如果它们不同,则意味着它是CSRF攻击。
服务器端并不需要发出CSRF令牌,只是做了检查;并且令牌在浏览器端完全生成。当然,这只是针对反CSRF。在服务器端应该有认证过程来验证用户ID。
这听起来是CSRF的有效解决方案,但我不确定为什么没有关于此方法的文档。
这个反CSRF机制有什么错吗?