因此,我们的应用程序是:
通常我们会发送一个sessionidcookie和一个csrftokencookie。令牌cookie值将作为x- header包含在任何AJAX帖子中,并且每次请求都将在服务器上验证所有内容。
sessionid
csrftoken
由于SPA页面是在返回浏览器之前构建的,因此我们可以在其中嵌入我们想要的任何内容。我们希望最终用户能够登录多个选项卡,而一个选项卡不影响其他选项卡。
我们宁愿做的是:
这使我们有机会允许多次登录,每次登录都有唯一的sessionidcookie名称,但每个发布请求都具有标准化的x-header名称。
这和sessionid cookie,csrftoken cookie / x-header方法一样安全吗?
是的,添加攻击者无法从有效用户的会话中复制的标头是执行此操作的一种方法。
例如X-Requested-With可以将其添加到每个AJAX请求中(默认情况下,JQuery会执行此操作),并且在服务器端收到请求时,您只需检查此标头是否存在。如果没有服务器通过CORS选择加入,则无法跨域发送此标头。
X-Requested-With
例如
X-Requested-With: XMLHttpRequest;0123456789ABCDEF