Блокировка записей поддельной формы - PullRequest
0 голосов
/ 28 сентября 2010

У нас есть регистрационная форма, где люди могут зарегистрироваться для участия в опросах за небольшую компенсацию.Недавно мы нашли много подозрительных записей.Я разыскал сайт на китайском языке, который я перевел через Google, и это было "как" зарегистрироваться на таких сайтах.С тех пор я работаю над поиском способа автоматической фильтрации поддельных.

В регистрации есть "капча", которая, как мы надеемся, блокирует не людей, но вводимые данные во многих случаях чрезвычайно реалистичны.,Опрос предназначен для барменов, и все поля заполнены с использованием законных мест и адресов.Телефонные номера могут быть выключены, но они могли использовать сотовую связь и перемещаться в область.Я пытался отфильтровать данные об IP-адресе и стране, используя следующую функцию:

// this function is necessary since allow_url_fopen is disabled by default in php.ini in PHP >5.
function my_file_get_contents($file_path) {
    $ch = curl_init();
    curl_setopt ($ch, CURLOPT_URL, $file_path);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 1);
    $buffer = curl_exec($ch);
    curl_close($ch);
    return $buffer;  
}

function getInfoFromIP(){

// get correct IP in case of a proxy
if (!empty($_SERVER['HTTP_CLIENT_IP'])){                   // shared ip
    $real_ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){       // ip is from proxy
    $real_ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else{
    $real_ip=$_SERVER['REMOTE_ADDR'];
}

//verify the IP address for the
ip2long($real_ip)== -1 || ip2long($real_ip) === false ? trigger_error("Invalid IP Passed: ", E_USER_ERROR) : "";

$ipDetailArray=array(); //initialize a blank array
$ipDetailArray['ip'] = $real_ip; //assign ip number to the array

//get the XML result from hostip.info using custom lookup function
$xml = my_file_get_contents("http://api.hostip.info/?ip=".$real_ip);

//regex to get the country name from <countryName>INFO</countryName>
preg_match("@<countryName>(.*?)</countryName>@si",$xml,$countryInfoArray);
$ipDetailArray['country'] = $countryInfoArray[1];    //assign country name to the array

//get the country name inside the node <countryName> and </countryName>
preg_match("@<countryAbbrev>(.*?)</countryAbbrev>@si",$xml,$ccInfoArray);
$ipDetailArray['country_code'] = $ccInfoArray[1];     //assign country code to array

//return the array containing ip, country and country code
return $ipDetailArray; 
}

Затем я вручную проверял и удалял те из них, которые появляются за пределами США (гдеБар и опросы должны быть расположены для участия).Я все еще нахожу много подозрительных, которые перечислены с IP-адресами в США (которые, я уверен, подделаны).

Не уверен, что мой код неполон или есть лучшее решение, которого я не былсмог найти.Спасибо

1 Ответ

0 голосов
/ 29 сентября 2010

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

  1. Изолировать страницу как свой собственный виртуальный сервер.Используйте Apache, чтобы заблокировать повторных нарушителей.
  2. Хорошо использовать капчу, но если они ее преодолевают, у вас проблема.Подумайте об улучшении капчи, используя вещи, которые ни один робот не может обойти, такие как запутанная графика или вопросы, связанные с человеком.Если это продолжится, значит, у вас в руках несколько решительных людей.
  3. Периодически меняйте имя страницы.Он может блокировать людей, которые переходили по ссылке "как это сделать"
  4. Вставлять Google Analytics и следить за трафиком.Это может помочь вам определить шаблоны и время суток, когда проблемы очевидны.Иногда это может привести к еще более интересным решениям.
  5. Внимательно изучите журналы.Проверьте IP-адреса с помощью онлайн-инструмента.Сообщите обидчикам интернет-провайдерам.

Возможно, проверьте, поддерживают ли они геолокацию браузера, и попробуйте.(http://www.browsergeolocation.com/) Хотя блокировка по местоположению является сложной задачей, поскольку многие хакеры имеют в своем распоряжении другие компьютеры-зомби, а информация, такая как коды городов, сегодня так портативна.

...