CSRF (Cross-Site Request Forgery, также XSRF) – опаснейшая атака, которая приводит к тому, что хакер может выполнить на неподготовленном сайте массу различных действий от имени других, зарегистрированных посетителей.
Какие это действия – отправка ли сообщений, перевод денег со счёта на счёт или смена паролей – зависят от сайта, но в любом случае эта атака входит в образовательный минимум веб-разработчика.
********
КАК ЭТО РАБОТАЕТ?
Скрипт генерирует криптостойкий токен, работающий до конца сессии.
Во все формы автоматически добавляются скрытые (hidden) поля с токеном (при method="POST")
При отправке формы идет проверка токена: успех - скрипт продолжает работу, провал - сбрасывается токен и удаляются "злые" данные.
********
УСТАНОВКА
[1] - Если нет буферизации вывода
1) Подключить файл CSRF-secure.php в шапку сайта ДО html-кода и ПОСЛЕ старта сессий (session_start();)
2) В футер сайта ПОСЛЕ html-кода прописать: ob_end_flush();
[2] - Если есть буферизация вывода
1) Убрать в шапке старт буферизации (ob_start();)
2) Оставить в футере ob_end_flush(); или добавить, если его нет.
3) * Следовать инструкции [1]
********
ВОЗМОЖНЫЕ ПРОБЛЕМЫ
1) Возможна проблема с кодировкой utf-8 - пропишите в шапке в тег head этот html-код:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
2) Включите следующие модули CGI/LSAPI:
Для PHP 5.3.0+: openssl, dom
Для PHP 7.0.0+: dom