CSRF — как понять и защитить от этой штуки без лишних заморочек
Кто сталкивался с CSRF, знает, что это одна из тех атак, что работают через доверие браузера к сайту. Короче, если у пользователя есть сессия на сайте, злоумышленник может заставить браузер сделать что-то нежелательное — например, изменить пароль или перевести деньги, просто подгрузив определённый запрос. При этом жертва даже не заметит, что что-то не так.
Лично я обычно проверяю, есть ли на сайте защита от CSRF через токены в формах и заголовки. Если это современный фреймворк, вроде Django или Laravel, там почти всегда встроено, но иногда бывает, что кто-то забывает добавить в свои API правильный механизм. Вот на что обращаю внимание:
- Есть ли в формах уникальный токен, который сервер проверяет на стороне?
- Не принимаются ли запросы без нужного заголовка типа X-Requested-With?