В контактную форму Nodemailer попадают спам-боты, отправляющие поддельные данные

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

Я попытался настроить скрытое поле формы, которое перенаправляет и предотвращает отправку формы, но, похоже, это не работает.

app.post("/products/contactCorporate", function (req, res) {
  let { name, email, message, businessAddress } = req.body;

  //businessAddress is a hidden field on my form
  if (businessAddress.length !== 0) {
    req.flash('success', 'Sorry Bot!');
    res.redirect("/products/contactCorporate");
  } else {
    submitForm();
  }
});

Я хотел бы найти пакет или решение NPM для проверки электронной почты на серверной части перед отправкой формы или каким-либо образом обмануть бота. Я бы предпочел не использовать капчу.

Любая помощь приветствуется.


person Chris Davis    schedule 15.05.2019    source источник
comment
Что вы имеете в виду под подтверждением электронной почты? Вы имеете в виду подтвердить используемый адрес электронной почты? Проверить отправляемое сообщение? Подтвердить юридический адрес?   -  person Michael Platt    schedule 15.05.2019
comment
Я хочу убедиться, что это настоящее письмо, а не отправка от бота.   -  person Chris Davis    schedule 15.05.2019
comment
Что вы определяете как настоящее электронное письмо? Потому что я мог бы создать бота, который отправляет электронное письмо [email protected], но это может быть и настоящее письмо. Если вы просто хотите убедиться, что электронное письмо выглядит действительным, вы можете сделать это с помощью регулярного выражения, но оно не будет очень надежным.   -  person Michael Platt    schedule 15.05.2019
comment
Я бы определил настоящую электронную почту как не бот. Думаю, я просто хотел бы отфильтровать мусор. Мне удавалось сделать это в своих прошлых проектах, используя PHP для отправки формы и создавая скрытое поле приманки, которое предотвращало бы отправку формы, если бы она содержала данные. Это тоже странно, потому что у меня есть другие формы на сайте, но кажется, что только одна из них рассылается спамом.   -  person Chris Davis    schedule 15.05.2019
comment
И такая же логика не работает для Node + Express? Вы просмотрели код и проверили, что происходит?   -  person Michael Platt    schedule 15.05.2019
comment
По-видимому, нет, поскольку у меня настроена приманка, а почта от ботов все еще проходит. Я только что наткнулся на этот пакет npmjs.com/package/validate-email-hostname собираюсь попробовать.   -  person Chris Davis    schedule 15.05.2019


Ответы (1)


Мне удалось это сделать с помощью пакета NPM наличия электронной почты

Существование определяется подключением по telnet к серверу MX домена электронной почты и попыткой отправить электронное письмо на указанный адрес. Серверы MX возвращают 250, если адрес электронной почты существует, и 550, если нет.

app.post("/products/contactCorporate", function (req, res) {
  let { name, email, message, businessAddress } = req.body;

  emailExistence.check(email, function (error, response) {
    if (response === false) {
      req.flash('success', 'Sorry, the email seems to be spam!');
      res.redirect("/products/contactCorporate");
    } else {
      submitForm();
    }
  });
});
person Chris Davis    schedule 15.05.2019
comment
Оказывается, наличие электронной почты - не полное решение. В настоящее время я ищу кикбокс - person Chris Davis; 15.05.2019