无需赘述,我有一个 100% Ajax 的网站。对站点的所有请求(GET 和 POST)都是通过 Ajax 完成的。现在我必须实现 CSRF 保护,我遇到的所有解决方案都归结为在标头中发送 CSRF 令牌,但大多数解决方案都从 HTML 或 GET 请求附带的 cookie 中获取此令牌。
现在因为我的网站是 100% Ajax 并且它不会重新加载。我想知道是否可以在每个 POST 请求之前向服务器发出 GET 请求以获取令牌,然后将其与 POST 请求一起提交到标头中,例如
提交 GET 请求以aaa.com/get-csrf-token获取令牌,然后将该令牌与标头中的请求一起提交,如果来自另一个站点的某人向 GET 请求aaa.com/get-csrf-token并且服务器返回一个令牌,那么据我所知他们仍然无法读取该值。
由于令牌是按会话生成的,因此我可以简单地检查提交的令牌是否与我在与该会话关联的 memchache 中拥有的令牌相同。
有人可以告诉我这是否可行吗?