CSRF tricks authenticated users into submitting malicious requests without their knowledge. The browser automatically sends cookies, making the forged request appear legitimate.
✅ CSRF Defense Implementation
# Python/Flask - CSRF Token
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField
from wtforms.validators import DataRequired
class LoginForm(FlaskForm):
username = StringField('Username', validators=[DataRequired()])
password = PasswordField('Password', validators=[DataRequired()])
# In templates:
// JavaScript - Double Submit Cookie Pattern
// 1. Server sets CSRF cookie
document.cookie = "csrftoken=abc123; SameSite=Strict";
// 2. JavaScript reads cookie and adds to request
function makeRequest(url, data) {
const csrfToken = getCookie('csrftoken');
return fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': csrfToken
},
body: JSON.stringify(data)
});
}