客户端存储CSRF令牌的正确方法是什么?

问题描述 投票:0回答:1

我在

/login
端点上调用服务器,它返回一个会话 cookie 以及返回值中的 CSRF 令牌(无法将其存储为 cookie,因为它不安全)。我可以在客户端的哪里存储 CSRF 值,以便我可以在对服务器的调用中使用它?如果它只是在 JS 内存中,即使我的会话仍然有效,我一离开页面就会丢失它,并且存储为 cookie 是不安全的。或者是否无法存储,每次关闭页面时都必须点击端点才能获取?

csrf csrf-token
1个回答
0
投票

将其存储在 Localstorage 中,因为没有其他前端域可以访问您的 csrfToken,因为它与您的前端域关联存储。

例如,hacker.com 无法从 your-domain.com

上设置的 localStorage 访问 csrfToken

但我仍然想知道黑客是否可以欺骗子域名为 your-domain.com.

<body>
<form class="form" action="bankApi/bank-transfer" method="POST">
  <input type="text" name="account" value="456" />
  <input type="text" name="amount" value="1000000" />
  <input type="submit" value="Click me!" />
</form>

<script>
  const form = document.querySelector(".form");
  // Extracting csrfToken from localStorage for this hacker.com domain is NOT possible. 
  form.submit();
</script>
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.