Всем привет!
drupal 11
Вместо модуля webform или contact form думаю сделать тип материала Заявки и позволить анонимным пользователям создавать эти материалы. На сколько это приемлимо и безопасно? ИИ говорит, что у webform в отличие от такого подхода есть защита от: CSRF-атаки, Спам-атаки, XSS-атаки, Загрузка вредоносных файлов DoS-атаки... Но тут же пишет про ряд его уязвимостей. Что лучше?
- Блог
- Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Комментарии
Я давно отказался от webform и contact form. Не потому, что это плохие модули, просто мне лично не удобно с ними работать.
Использую такие подходы:
1 подход.
Создаю програмно в своем модуле форму и вывожу ее на сайт. В классе созданной формы делаю необходимую валидацию и обработку результата.
2 подход.
Не использую функционал форм в друпале. Прям в html верстаю нужную форму на сайте, делаю обработку на JS и отсылаю данные в котроллер, который отвечает за обработку формы в моем модуле.
В обоих подходах данные из форм сохраняю в материале, условно назову "Обратная связь".
Естественно принимаемые данные нужно валлидировать и обезопасить. Для этого в друпал использую эти функции:
<?phpuse Drupal\Component\Utility\Xss;
use Drupal\Component\Utility\Html; $cleanData = Html::escape( Xss::filter( $fieldData ) );
?>
В друпале вы можете защитить любую форму CSRF токеном, не важно, как она создана.
От спама можно поставить яндексСмарт капчу. Там есть вариант невидимой капчи, работает отлично.
Как минимум настройте запрет на выполнение кода в папках, где хранятся файлы. Это не единственная мера, просто эта тема объемная для пояснения.
На прямую с формой не связаны, можно дидосить любую страницу. Простые дидос атаки решаются настройкой ngnix или ngnix + fail2ban. Сложные атаки через спец. сервисы отбиваются.
спасибо!
Да, можно и на нодах, но у webform есть ряд преимуществ, например возможность отправлять email'ы администратору и клиенту с разным текстом, возможность отправлять уведомление не только на email, но и в telegram и куда угодно по API. Уже есть готовые страницы просмотра списка заявок, для нод нужно будет вьюхи самому делать. У webform так же можно настроить лимиты, подключить капчу проще и тд.
Да там просто проект такой, что нужен самый-самый минимум. Никаких уведомлений не надо, да и в общем списке материалов смотреть список - пойдёт. Но всё-таки поставила webform. Вместо капчи поставила Antibot. Вот, не знаю пока, как он справляется.
Ладно, пойму подход kosskren для хитрых форм каких-то, но для обычных нафига ноды то?
Тоже вроде делал тыщу лет назад, рулсами уведомления...
По мне так странный подход, больше геморроя при поддержке создаст
Если вопрос в том, зачем сохранять данные из форм в ноды, то тут все просто.
Это архив обращений и страховка на случай, если какой-то канал уведомлений(почта, мессенджер) не отработает.