Why should I put a CSRF token in a JWT token?

后端 未结 2 1334
谎友^
谎友^ 2021-02-04 18:45

I want to bring a doubt about JWT tokens and CSRF from the Stormpath post that explain the advantages and disadvantages of storing the JWT either in localStorage or cookies.

相关标签:
2条回答
  • 2021-02-04 19:04

    I am the author of the Stormpath Blog Post. Storing XSRF token in the JWT isn't about that it is in the JWT, it is about that it is in a cookie. The cookie should be httpOnly, so you can not read it from Javascript.

    Now, I think the point that caused a little confusion is where I talk about angular. Angular sets it's only XSRF cookie as well (which is not httpOnly) to put it into the header at request time (which can only be done by javascript on same domain). These are not the same cookie.

    If you think about implementing XSRF support in your application, this has been done with storing server side state and the point of storing the XSRF. Storing it in the httpOnly cookie is about being stateless with XSRF. Here, you would validate the JWT signature, get the XSRF out of the claims, and compare it to the header.

    The answer to your question is so that you do not need to store state on your server.

    0 讨论(0)
  • 2021-02-04 19:05

    My understanding was this:

    • Store JWT is an HTTPonly cookie.
    • In that JWT, store a hashed version of an XSRF token.
    • Send the client the XSRF token when they sign in so they can store it in local storage
    • Later when the client sends requests, the JWT is automatically sent with each request via cookies and then you also send the XSRF token via a header or query variable and on the server side, re-hash to compare to what's in the JWT on the server

    Your JWT is protected from being stolen in a XSS and you're protected from XSRF. XSS could still execute on your browser but could only do damage for that session in the browser. Ultimately, You couldn't stop someone from writing a really detailed script that just ran on your browser, so conventional safeties to protect from XSS are still needed by the web developer.

    0 讨论(0)
提交回复
热议问题