text защитаотспамавформах

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了text защитаотспамавформах相关的知识,希望对你有一定的参考价值。

В этой статье я покажу как с помощью библиотеки modHelpers защитить форму от CSRF атаки при использовании дополнения FormIt. Механизм защиты сайта был подробно описан в этой статье.

Мы знаем, что подключить свою логику к FormIt можно через хуки. Хук — это сниппет. Поэтому создаём сниппет и даем ему название «csrf». Он содержит всего несколько строчек:

if (request()->checkCsrfToken('post') === false) {
    // Выставляем плейсхолдер ошибки
    $hook->addError('csrf','Ошибка! Указан некорректный токен.');
    return false;
}
return true;
Он срабатывает только для формы, переданной POST методом. Теперь нужно создать форму. Для демонстрации возьмём такую простенькую:

<!-- Плейсхолдер ошибки -->
<div class="error">[[!+fi.error.csrf]]</div>

<form method="post" class="form">
    {csrf_field()}
    <div class="form-group">
        <label for="name">Имя:</label>
        <input type="text" name="name" id="name" value="[[!+fi.name]]" />
    </div>
    <div class="form-group">
        <label for="email">Email:</label>
        <input type="email" name="email" id="email" value="[[!+fi.email]]" />
    </div>
    <div class="form-buttons">
        <input type="submit" class="btn btn-default" value="Отправить" />
    </div>
</form>
У формы должно быть скрытое полей с токеном. Его можно вставить с помощью функции csrf_field(). Теперь форма готова к защите. Осталось вызвать сниппет FormIt с нашим хуком перед формой. Хуки срабатывают в порядке подключения. Поэтому указать его нужно самым первым.

[[!FormIt?
   &hooks=`csrf,email`
   ...
]]
В результате, при обработке запроса формы сниппет FormIt в первую очередь проверит токен. Если он не совпадёт с токеном пользователя или вообще отсутствует, то FormIt вернёт ошибку, и форма обрабатываться не будет.

以上是关于text защитаотспамавформах的主要内容,如果未能解决你的问题,请参考以下文章

La Sylphide 仙女

javascript Формаобратнойсвязикunimailсовсплывающимокном

python РаботысданнымипосредствомDjangoORMизстороннихфайлов

sh Взятьправкиизкоммита7496f529,применитьихктекущейветке,носамкоммитнесовершать

php Возвращаетданныеометкахпостов,входящихвуказанную(ые)рубрику(и)

php Возвращаетданныеометкахпостов,входящихвуказанную(ые)рубрику(и)