With CSRF Protection
The server checks the token. Real forms pass. Forged requests get a 403.
👤
Victim
🏦 bank.com
evil.com
https://bank.com/transfer
Send money
Amount, recipient, etc.
csrf_token = a9f2b7...c14 (issued by bank.com)
🏦
bank.com
CSRF Middleware
Idle
Waiting
POST /transfer +cookie+token a9f2...
POST /transfer +cookieNO token
✓ Real form passed. Forged request blocked with 403.