1. Главная
  2. Форумы
  3. Техподдержка Drupal
  4. Решение проблем

Форма обратной связи на нодах

Главные вкладки

Всем привет!
drupal 11
Вместо модуля webform или contact form думаю сделать тип материала Заявки и позволить анонимным пользователям создавать эти материалы. На сколько это приемлимо и безопасно? ИИ говорит, что у webform в отличие от такого подхода есть защита от: CSRF-атаки, Спам-атаки, XSS-атаки, Загрузка вредоносных файлов DoS-атаки... Но тут же пишет про ряд его уязвимостей. Что лучше?

Комментарии

Аватар пользователя kosskren kosskren 22 мая в 11:38

Я давно отказался от webform и contact form. Не потому, что это плохие модули, просто мне лично не удобно с ними работать.

Использую такие подходы:

1 подход.
Создаю програмно в своем модуле форму и вывожу ее на сайт. В классе созданной формы делаю необходимую валидацию и обработку результата.

2 подход.
Не использую функционал форм в друпале. Прям в html верстаю нужную форму на сайте, делаю обработку на JS и отсылаю данные в котроллер, который отвечает за обработку формы в моем модуле.

В обоих подходах данные из форм сохраняю в материале, условно назову "Обратная связь".

Естественно принимаемые данные нужно валлидировать и обезопасить. Для этого в друпал использую эти функции:

<?php
use Drupal\Component\Utility\Xss;
use
Drupal\Component\Utility\Html; $cleanData = Html::escape( Xss::filter( $fieldData ) );
?>

В друпале вы можете защитить любую форму CSRF токеном, не важно, как она создана.
От спама можно поставить яндексСмарт капчу. Там есть вариант невидимой капчи, работает отлично.

Загрузка вредоносных файлов

Как минимум настройте запрет на выполнение кода в папках, где хранятся файлы. Это не единственная мера, просто эта тема объемная для пояснения.

DoS-атаки

На прямую с формой не связаны, можно дидосить любую страницу. Простые дидос атаки решаются настройкой ngnix или ngnix + fail2ban. Сложные атаки через спец. сервисы отбиваются.

Аватар пользователя ivnish ivnish 23 мая в 19:10

Да, можно и на нодах, но у webform есть ряд преимуществ, например возможность отправлять email'ы администратору и клиенту с разным текстом, возможность отправлять уведомление не только на email, но и в telegram и куда угодно по API. Уже есть готовые страницы просмотра списка заявок, для нод нужно будет вьюхи самому делать. У webform так же можно настроить лимиты, подключить капчу проще и тд.

Аватар пользователя gera8774 gera8774 28 мая в 12:58

Да там просто проект такой, что нужен самый-самый минимум. Никаких уведомлений не надо, да и в общем списке материалов смотреть список - пойдёт. Но всё-таки поставила webform. Вместо капчи поставила Antibot. Вот, не знаю пока, как он справляется.

Аватар пользователя pselfin pselfin 27 мая в 12:57

Ладно, пойму подход kosskren для хитрых форм каких-то, но для обычных нафига ноды то?
Тоже вроде делал тыщу лет назад, рулсами уведомления...
По мне так странный подход, больше геморроя при поддержке создаст

Аватар пользователя kosskren kosskren 28 мая в 13:19

нафига ноды то

Если вопрос в том, зачем сохранять данные из форм в ноды, то тут все просто.
Это архив обращений и страховка на случай, если какой-то канал уведомлений(почта, мессенджер) не отработает.

Логотип drupal.ru

Содержимое сайта публикуется на условиях CreativeCommons Attribution-ShareAlike 3.0 или более поздней версии. Программные коды в тексте статей — на условиях GNU GPL v2 или более поздней версии.

Документация по совместной работе с репозиторием drupal.ru – https://docs.drupal.ru/code

Drupal – торговая марка Дриса Бёйтарта

12+

AltStyle によって変換されたページ (->オリジナル) /