Javascript 这是防止跨站点请求伪造(CSRF)攻击的安全方法吗?

Javascript 这是防止跨站点请求伪造(CSRF)攻击的安全方法吗?,javascript,ajax,cookies,csrf,Javascript,Ajax,Cookies,Csrf,因此,我们的应用程序是: 每个用户都必须登录 登录页面发回服务器,如果授权用户返回SPA应用程序 SPA应用程序完全是AJAX HTTPS 通常我们会发送一个sessionidcookie和一个csrftokencookie。令牌cookie值将作为一个x头包含在任何AJAX文章中,并在每个请求中在服务器上验证所有内容 由于SPA页面是在返回浏览器之前构建的,因此我们可以在其中嵌入我们喜欢的任何内容。我们希望最终用户能够登录多个选项卡,其中一个不会影响其他选项卡 我们希望做的是: 像以前一

因此,我们的应用程序是:

  • 每个用户都必须登录
  • 登录页面发回服务器,如果授权用户返回SPA应用程序
  • SPA应用程序完全是AJAX
  • HTTPS
通常我们会发送一个
sessionid
cookie和一个
csrftoken
cookie。令牌cookie值将作为一个x头包含在任何AJAX文章中,并在每个请求中在服务器上验证所有内容

由于SPA页面是在返回浏览器之前构建的,因此我们可以在其中嵌入我们喜欢的任何内容。我们希望最终用户能够登录多个选项卡,其中一个不会影响其他选项卡

我们希望做的是:

  • 像以前一样,将sessionid作为cookie发送,但是cookie名称是随机的
  • 没有csrftoken,而是在javascript例程中嵌入随机cookie名称,该例程将x头添加到AJAX post请求中
  • 服务器将从x头获取sessionid
这使我们有机会允许多个登录,每个登录都有一个唯一的
sessionid
cookie名称,但每个post请求都有一个标准化的x头名称


这是否与sessionid cookie、csrftoken cookie/x-header方法一样安全?

是的,添加攻击者无法从有效用户会话复制的头是一种方法

e、 可以添加到每个AJAX请求中(默认情况下JQuery会这样做),当服务器端接收到请求时,您只需检查该头是否存在。如果服务器未通过CORS选择,则无法跨域发送此标头

您可以将其与令牌结合使用-

e、 g

X-Requested-With: XMLHttpRequest;0123456789ABCDEF