Спам проходит через простой фильтр спама, но я не знаю как - PullRequest
1 голос
/ 04 ноября 2011

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

Вот код:

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" />

Ответы [ 4 ]

1 голос
/ 10 ноября 2011

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

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

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

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

0 голосов
/ 04 сентября 2013

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

0 голосов
/ 10 ноября 2011

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

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

0 голосов
/ 05 ноября 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...