Если у вас есть сайт с формами (регистрация, комменты, смена пароля и т.п.), то вряд ли вы не слышали про CSRF. Вкратце — это когда злоумышленник заставляет пользователя вашего сайта ненамеренно выполнить какое-то действие. Например, нажать кнопку «удалить» или «сменить email», просто перейдя по вредной ссылке.
Чаще всего атаки такого типа срабатывают, если на сервере не проверяется, откуда пришёл запрос. Проверка реферера — не лучший способ, потому что он легко подделывается.
Что реально помогает? Самый надёжный подход — использовать CSRF токены, которые генерируются для каждой сессии и проверяются при отправке формы. Без правильного токена сервер просто отклонит запрос. Это просто и эффективно.
Если в проекте есть фреймворк — почти всегда там уже есть встроенная поддержка CSRF-защиты (Laravel, Django, Spring и др.). Для самописных движков — нужно явно добавить проверку токена.
Было время, когда про CSRF вообще толком никто не слышал, и все пользовались фронтом наивно, а тут раз — и бац, атаки пошли. Сейчас, конечно, без токенов никуда, это как шлем в байке — может и не всегда спасёт, но без него точно беда. Про реферер можно забыть — это типа дверь со стеклом, которое можно разбить ключом. А вот эта тема с токенами — реально работает, хотя и раздражает в самом начале.
CSRF — это как если сосед тайком решил от твоего имени пост написать у администрации, а ты даже не заметил. Токены — это типа твой личный пароль для каждой формы, без него ни один скрипт незнакомый не проскочит. Без них сервак разве что на авось надеется, и часто безуспешно. В общем, пусть тут раздражают эти токены, зато потом спокойней — меньше сюрпризов.