Q13: Where should JWTs be stored in browser-based applications to prevent XSS and CSRF?
Browser token storage involves trading off Cross-Site Scripting (XSS) risks against Cross-Site Request Forgery (CSRF) risks:
- LocalStorage / SessionStorage: Vulnerable to XSS attacks. Any malicious JavaScript running in the domain context can read stored tokens.
- Standard HTTP Cookies: Vulnerable to CSRF attacks unless protected with proper
SameSiteflags and anti-CSRF tokens. httpOnly,Secure,SameSite=StrictCookies: Best Security Standard.httpOnlyprevents client-side JavaScript from reading the cookie (mitigating XSS extraction), whileSecureforces HTTPS transmission andSameSitemitigates CSRF.
Key Takeaways
- Never store access or refresh tokens in LocalStorage due to script access XSS risks.
- Store tokens in
httpOnly,Secure,SameSite=Strictcookies or maintain access tokens strictly in memory.