Translate
Эта версия фреймворка устарела, воспользуйтесь HLEB2

PHP Микрофреймворк HLEB

Скачать Скачать с GitHub
Предназначение Установить Настройка Структура проекта Маршрутизация Типы маршрутов Группы маршрутов Защита маршрутов Конструктор страниц Контроллеры Модели Получение данных Базы данных Регистрация API DI Дополнительно

Защита маршрутов

В микрофреймворке HLEB реализована защита маршрутов от атак типа CSRF (Сross Site Request Forgery), но применять её можно опционально. Сделано это для максимальной гибкости разработки, поэтому необходимо вручную назначить защиту маршрутам, которые в этом нуждаются. Суть защиты состоит в том, что запрос, попадающий на защищённый маршрут, должен иметь параметр GET или POST с уникальным проверочным ключом, в противном случае запрос будет отклонён. Например, нужно передать данные из html-формы методом POST. Запрос этот должен быть направлен на маршрут с установленной защитой. Чтобы отправить с запросом уникальный ключ, необходимо в форме разместить специальную функцию csrf_field().
<form method="POST" name="protected" action="/target/" > /* Данные формы */ <?php csrf_field(); ?> // Добавит строку <input type="hidden" name="_token" value="KEY"> , где KEY это сгенерированный ключ. </form>
Защита маршрута c адресом "/target/".
Route::protect()->post('/target/', 'Этот текст защищён от CSRF');
В случае, если нужно защитить Ajax-запросы, к каждому из них добавляется параметр "_token" со значением уникального ключа. Естественно, эти запросы должны обрабатываться защищёнными маршрутами. Получить уникальный ключ можно выполнив PHP-функцию csrf_token(), отобразить его в html-коде, затем найти полученный результат на странице и добавить к запросу при помощи JavaScript. Например, вывод ключа в мета-теги страницы:
<meta name="csrf-token" content="<?= csrf_token(); ?>" >
Ещё один встроенный способ - автогенерация защищённой ссылки с параметром "_token". Функция getProtectUrl() добавляет к переданному ей аргументу (URL-адресy) необходимый GET-параметр. По этой ссылке текущий пользователь может переходить на любую защищённую страницу.

Методы getProtect(), endProtect() и protect()

Групповая защита выбранных маршрутов реализуется расстановкой начального метода getProtect() и завершающего endProtect().
Route::getProtect(); // Начало защиты Route::get( ... ); Route::get( ... ); Route::get( ... ); Route::endProtect(); // Завершение защиты
Метод protect() устанавливает защиту к отдельно взятому маршруту или группе, обозначенной применением getGroup().

Исключение метода из защищённых

Если передать методу protect() аргумент "None", то он исключает маршрут или группу из защищённых.
Route::getProtect(); Route::get( ... ); // Защищён Route::protect('None')->get( ... ); // Не защищён Route::get( ... ); // Защищён Route::endProtect();


Предназначение Установить Настройка Структура проекта Маршрутизация Типы маршрутов Группы маршрутов Защита маршрутов Конструктор страниц Контроллеры Модели Получение данных Базы данных Регистрация API DI Дополнительно



Группа поддержки в Телеграм - @phphleb

Задать вопрос в блоге, который сделан с использованием фреймворка HLEB.

Этот сайт-инструкция к фреймворку HLEB сделан с использованием фреймворка HLEB.

HLEB - PHP Микрофреймворк Свободная лицензия. Без гарантий. © Foma Tuturov 2019-2025