CSRF (Cross-Site Request Forgery) це вразливість, коли атакуючий змушує браузер жертви виконати дію на сайті, де вона залогінена, без її відома. Працює це тому, що браузер автоматично додає cookie сесії до кожного запиту на ваш домен, навіть якщо запит ініціював чужий сайт. Це CWE-352.
Як це зустрічається на практиці
Жертва залогінена у вашому застосунку й одночасно відкриває сторінку атакуючого. Та сторінка тихо шле запит на ваш сервер (зміна пошти, переказ, зміна пароля), і браузер додає до нього дійсну сесію жертви. Сервер бачить валідний запит від залогіненого користувача й виконує його.
Приклад
Прихована форма на чужому сайті, яка сама відправляється:
Як захиститись
- CSRF-токен: унікальне значення в кожній формі, яке чужий сайт не знає
- Cookie сесії з атрибутом SameSite (Lax або Strict)
- Перевірка заголовків Origin чи Referer для змінюючих запитів
