Статическая почта сайта Форма API Безопасность - PullRequest
0 голосов
/ 02 мая 2019

Intro

Я работаю над статическим сайтом, созданным с помощью hugo, и хочу встроить форму электронной почты без использования внешних ( коммерческих или, возможно, ненадежных ) сервисов, таких как formspree.io (* 1005)* Слишком большая головная боль в Европейском союзе со всеми правилами, а самодостаточная версия работает с SendGrid, которую я тоже не хочу использовать ).

Не нашел ничего достаточно простого

  • Я нашел другие конструкторы форм, которые все делали слишком много, в которых я не нуждался (, например: веб-интерфейс, постоянство в БД, другие необычные интеграции )
  • Это действительнораздражает то, что большинство из них зависят от внешних служб, сломаны или страдают от чрезмерной сложности ( все, что я хочу, - это отправлять электронную почту с помощью sendmail после того, как кто-то отправляет данные в форму )

Написал свою собственную вещь

Для этой цели я создал API, на который я могу публиковать данные - после проверки, электронное письмо будет отправлено через sendmail .API построен с использованием flask ( python ), и он уже работает.

Я намерен поделиться им с сообществом, если он, конечно, кому-нибудь пригодится.

Каксделать его достаточно безопасным для WWW

Как защитить свою конечную точку от спамеров, роботов и других злоумышленников?

Есть идеи / предложения о том, как действовать?

Спасибозаранее.

Что я думал об этом

Я провел небольшое исследование и прочитал о колбе-ограничителе, но не думаю, что этого достаточно.

Другие предлагают включитьТокен CSRF, но я не знаю, как «сгенерировать» и включить его в мой статический сайт.

Еще одна вещь, которую я подумал, вероятно, поможет, это Google reCaptcha, но я не знаю, как использовать его в статическомsite.

Что я делаю сейчас (= змеиное масло)

На данный момент единственное, что я делаю, это проверяю источник, но, конечно, он может свободно устанавливать ставки с помощью таких инструментов, как curl, поэтомуЯ полагаю, что это не очень большая защита:

 if request.method == 'POST' and origin in ALLOWED_ORIGINS:
        return send_mail()

Что яwant

В конце я просто хочу встроить форму в статический hugo-сайт, который позволяет мне отправлять сообщения API, не раскрывая мой почтовый адрес или API нежелательным субъектам.

Я был бы очень рад за помощь или идеи здесь.Спасибо!

Редактировать: Я только что нашел Форма , и если мой сервер соответствует его требованиям, я сделаю попытку.

Edit # 2: Я буду продолжать разрабатывать свой собственный API, так как Forma также не соответствует моим требованиям.

Я добавил поле honeypot, которое, я надеюсь, будет автоматически заполнено ботами.

...