阻止欺骗表单条目

时间:2010-09-28 18:15:02

标签: php email-spam spoofing

我们有一个注册表,人们可以注册参加小额补偿调查。最近我们发现了很多可疑的条目。我用中文跟踪了一个我通过谷歌翻译过的网站,它基本上是一个“如何”注册这些类型的网站。我一直在努力寻找一种自动过滤伪造的方法。

注册有一个“验证码”,希望可以阻止非人类,但输入的数据在很多情况下都非常逼真。该调查适用于调酒师,所有字段均使用合法的地点和地址填写。电话号码可能已关闭,但他们可能正在使用一个小区并移动到该区域。我一直在尝试使用以下功能捕获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 :(得分:0)

唐,我们做了一些相似的事情,这里有一些我们不得不求助的事情:

  1. 将页面隔离为自己的虚拟服务器。使用Apache来阻止重复违规者。
  2. 好好利用Capcha,但如果他们越过它,你就会遇到问题。考虑     使用机器人无法绕过的东西来改进capcha,例如混淆图形或人为挑战问题。如果它继续下去,那么你手上就有一些坚定的人。
  3. 定期更改网页名称。它可能会阻止那些关注“操作方法”链接的人
  4. 插入Google Analytics并观看流量。当问题明显时,它可以帮助您发现模式和时间。有时,它可以带来更有趣的解决方法。
  5. 仔细检查日志。检查IP地址 使用在线工具。报告 违反ISP的。
  6. 也许检查一下它们是否支持浏览器地理位置,然后再去看看。 (http://www.browsergeolocation.com/)虽然地点受到限制很困难,因为很多黑客都有其他僵尸计算机可供使用,而区域代码等信息如此便携。