代码之家  ›  专栏  ›  技术社区  ›  Omar Ahmed

可以仅使用(CSRF)令牌进行身份验证吗

  •  0
  • Omar Ahmed  · 技术社区  · 1 年前

    最近,我了解到每次请求都会自动发送cookie。这种行为使一些网站容易受到CSRF的攻击。据我所知,CSRF可以通过使用存储在客户端JavaScript或存储API中的CSRF令牌来阻止,但不能存储在cookie中(以防止它也被发送)。

    我的问题是,如果我有一个身份验证cookie和CSRF令牌,为什么不使用令牌而不是cookie呢?为什么不只依赖于 存储在cookie中?

    我可以从我的应用程序中删除cookie身份验证,让客户端只在头中发送一个令牌或类似的东西吗(也许 X-Authentication-Token ).

    我认为这种方法有很多优点,比如不必存储和管理 数据库上的UUID,并且不必在主体中发送CSRF令牌。 你怎么认为?

    1 回复  |  直到 1 年前
        1
  •  1
  •   Evert    1 年前

    您可以使用身份验证令牌和 放入cookie头。合乎逻辑的位置是 Authorization 头球它不再是CSRF令牌,但它肯定是很好的身份验证,并且被不同的API大量使用。

    存在一些安全权衡。使用cookie的一个好处是,您可以将其标记为“HTTPOnly”,这使它对Javascript不可见。

    我通常建议查看OAuth2这样的标准,而不是自己从头开始。

    推荐文章