Безопасность форм
Для обеспечения безопасности форм MV предлагает 3 вида проверочных ключей:
- обычный CSRF ключ для классического POST запроса
- AJAX CSRF ключ для форм работающих на AJAX
- JQuery ключ, отдельно или в дополнение к CSRF ключу
Обычный CSRF ключ используется в формах, когда предполагается перезагрузка страницы в браузере.
<?
$form = new Form($fields);
$form -> useTokenCSRF();
$form -> submit() -> validate();
?>
<form method="post" enctype="multipart/form-data">
<? echo $form -> display(); ?>
<div class="buttons">
<? echo $form -> displayTokenCSRF(); ?>
<button>Отправить</button>
</div>
</form>
CSRF ключ для AJAX форм, необходим когда не происходит перезагрузка страницы в браузере, а запрос уходит на сервер в фоновом режиме с заголовком ‘X-Requested-With’.
<?
$form = new Form($fields);
$form -> useAjaxTokenCSRF();
?>
<form method="post" enctype="multipart/form-data">
<? echo $form -> display(); ?>
<div class="buttons">
<? echo Form::displayAjaxTokenCSRF(); ?>
<button type="button">Отправить</button>
</div>
</form>
JQuery ключ используется в дополнение к CSRF ключу для повышения безопасности формы, при классическом и ajax запросе.
//Файл views/main-header.php
<head>
...
<script type="text/javascript" src="<? echo $mv -> media_path; ?>js/jquery.js"></script>
<? echo Form::displayJqueryToken(); ?>
</head>
//Файл шаблона с формой (ajax или обычной)
//Для ajax формы нужен будет метод Form::displayAjaxTokenCSRF()
<?
$form = new Form($fields);
$form -> useTokenCSRF() -> useJqueryToken();
$form -> submit() -> validate();
?>
<form method="post" enctype="multipart/form-data">
<? echo $form -> display(); ?>
<div class="buttons">
<? echo $form -> displayTokenCSRF(); ?>
<button>Отправить</button>
</div>
</form>
Использование CAPTCHA
Для подключения CAPTCHA необходимо добавить в форму дополнительное поле со специальными параметрами. Ниже показа пример простой CAPTCHA расположенной в папке extra. Вы можете подключить более сложную каптчу по своему усмотрению.
<?
$form = new Form($fields);
$form -> addField(['Код безопасности', 'char', 'captcha', [
'captcha' => 'extra/captcha-simple',
'session_key' => 'captcha'
]];
$form -> addRule('captcha', 'required', true, 'Необходимо ввести проверочный код.');
?>
<form method="post" enctype="multipart/form-data">
<? echo $form -> display(); ?>
</form>
Предыдущий раздел
Валидация полей формы