CSRF Risk Calculator
Rate cross-site request forgery exposure from token design, SameSite cookies, request shape and the value of the forged action.
Inputs
Overall Risk Severity
Critical
Likelihood Score
7.50/ 9
Impact Score
9.00/ 9
Risk Score
7.50/ 9
Browser-Level Defence
No usable browser-level defence
Highest-Value Fix
Add a per-session synchroniser token verified on every state change
Step by step
Values used
Anti-CSRF token = None — 9; SameSite attribute on the session cookie = Not set, relying on browser defaults — 6; Shape of the state-changing request = Form-encoded POST — 6; Step-up authentication on sensitive actions = None — 9; Value of the forged action = Email or password change, i.e. account takeover — 9; Authenticated users exposed = 50,000 users
CSRF Risk
Likelihood = mean(token strength, SameSite attribute, request shape, step-up authentication); impact = value of the forged action plus a scale uplift for the exposed user base.
Overall Risk Severity
= Critical
Likelihood Score
= 7.50 / 9
Impact Score
= 9.00 / 9
Risk Score
= 7.50 / 9
Browser-Level Defence
= No usable browser-level defence
Highest-Value Fix
= Add a per-session synchroniser token verified on every state change
How it works
SameSite=Lax already blocks cross-site form POSTs in current browsers, so the residual likelihood depends on whether state changes are reachable by top-level GET and whether any user still runs a browser without the default. Impact is the worth of one forged action multiplied out across the exposed user base. CSRF is the cheapest attack to launch — a hidden form on any page the victim visits — and the cheapest to fix, so a Medium or higher here is almost always a missing one-line middleware.
Formula
CSRF Risk
Likelihood = mean(token strength, SameSite attribute, request shape, step-up authentication); impact = value of the forged action plus a scale uplift for the exposed user base.
- token
- 1 synchroniser token … 9 none
- sameSite
- 1 Strict, 4 Lax, 6 unset, 7 None
- scaleBoost
- 0–2 uplift for the number of exposed users
Frequently Asked Questions
How is CSRF Risk calculated?
Likelihood = mean(token strength, SameSite attribute, request shape, step-up authentication); impact = value of the forged action plus a scale uplift for the exposed user base. SameSite=Lax already blocks cross-site form POSTs in current browsers, so the residual likelihood depends on whether state changes are reachable by top-level GET and whether any user still runs a browser without the default. Impact is the worth of one forged action multiplied out across the exposed user base.
Why does CSRF Risk matter?
CSRF is the cheapest attack to launch — a hidden form on any page the victim visits — and the cheapest to fix, so a Medium or higher here is almost always a missing one-line middleware.
What values do I need to enter?
This calculator takes 6 inputs: Anti-CSRF token, SameSite attribute on the session cookie, Shape of the state-changing request, Step-up authentication on sensitive actions, Value of the forged action, Authenticated users exposed. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Is SameSite=Lax enough on its own?
Not for defence in depth. Lax blocks cross-site POST but still sends the cookie on top-level GET navigations, so any state change reachable by GET remains forgeable, and cookies without an explicit attribute behave inconsistently across browsers and API clients. Keep a token as well.
You might also need
- Clickjacking Risk CalculatorCommonly used together
- Cookie Security CalculatorCommonly used together
- Session Fixation Risk CalculatorCommonly used together
- OWASP Risk CalculatorAlso in Web & API Security
- Cross-Site Scripting (XSS) Risk CalculatorAlso in Web & API Security
- SSRF Risk CalculatorAlso in Web & API Security