Cross-Site Request Forgery

An attack when user using cookie:

  1. Victim logs in to like bank
  2. Victim browser set credential in cookie
  3. Victim visits evil.comevil.com triggers request to bank.com
  4. Browser sends cookie
  5. bank.com trusts request

// if jwt is sent in header (bearer), immune since do NOT auto-send Authorization headers

CSRF Protection Techniques

  1. CSRF Tokens (Most Common)
Server → random token
Client → include token in request (request body OR header)
Server → verify
  1. SameSite Cookies

    google.com → yoursite.com ❌ cookie NOT sent
    yoursite.com → yoursite.com ✅ cookie sent
    
    Link click → yoursite.com (GET) ✅
    Form POST from evil.com ❌
    
    evil.com → yoursite.com ✅ cookie sent
    
  2. Double Submit Cookie