Получение спама через простой спам-фильтр, но я не знаю как

#html #forms #filter #spam

#HTML #формы #Фильтр #спам

Вопрос:

У меня есть простой фильтр нежелательной почты (для предотвращения отправки формы нежелательной почты), настроенный на веб-сайте путем генерации случайного числа и ввода его пользователем. По какой-то причине спам все еще может проходить, даже не вводя случайное число. У кого-нибудь есть идеи относительно того, как это могло произойти?

Вот код:

 var randomnumber=Math.floor(Math.random()*1001);
var isNumberEnteredCorrect = false;
var whatevertheyentered;


function checkUserInput(whatevertheyentered){

if(whatevertheyentered == randomnumber){
    return true;
}
else {
    return false;
}
}

function validateForm()
{
var x = document.forms["myForm"]["random_number"].value;

  if(x == randomnumber){
    return true;
  }

  else{
    alert("The number you've entered is incorrect.");
    return false;
  }


}
  

Пользователь отправляет форму, нажимая эту кнопку:

  <input name="Submit" type="submit" class="button" value="Send Message" />
  

Комментарии:

1. Почему else закомментировано в validateForm() ?

2. Извините, это не прокомментировано, я просто скопировал это неправильно.

3. Пользователи могут отключить javascript. Таким образом, они могут обойти этот спам-фильтр.

Ответ №1:

Один из вариантов, почему спам-боты попадают в ловушку, заключается в том, что они не используют JavaScript и напрямую отправляют форму.

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

Я не знаю, как работает внутренняя логика спам-ботов, но я предполагаю, что бот ищет тег «форма» и пытается опубликовать содержимое формы в параметре действия формы. В этом случае может помочь «кодирование разделенной строки» параметра формы действия и отправка формы AJAX.

Однако имейте в виду, что этот трюк сработает, только если ваш сайт не является основной целью для ботов.

Ответ №2:

Я не вижу никаких непосредственных ошибок с вашим javascript, однако любой пользователь может отключить javascript в своем браузере, чтобы эти функции не выполнялись. Из-за этого вы не должны полагаться только на javascript для проверки формы. Резервное копирование с помощью серверного языка, такого как PHP, намного безопаснее.

Комментарии:

1. Проблема в том, что у меня нет PHP на моем сервере, который находится вне моего контроля, потому что он принадлежит моему работодателю. Есть ли какие-либо другие методы защиты от нежелательной почты, которые я мог бы использовать, которые не используют PHP?

2. @user: Конечно, если они используют ASP.net . Или если они используют, я не знаю, Perl. Но вам нужен какой-то серверный код. Все, что находится на стороне клиента, может быть подделано, отключено или иным образом обойти.

Ответ №3:

Выполните проверку на стороне сервера с помощью PHP / ASP.NET / ColdFusion или чего-либо еще, что вы используете. НИКОГДА не полагайтесь полностью на проверку на стороне клиента, она наиболее подвержена взлому и злоупотреблениям.

Как только форма заполнена, значения должны быть отправлены, скажем, в review.php страница, на которой вы проверяете, что значение было тем, которое вы ожидали. Если все правильно, продолжайте нормально, иначе завершите выполнение кода формы / отправки и перенаправьте пользователей на страницу ошибок.

Комментарии:

1. Просто дайте нам знать, к каким «языкам» у вас есть доступ

Ответ №4:

Вы могли бы использовать Javascript для отправки формы таким образом, если у бота отключен JS, он не сможет отправить форму.