我有一个博客聚合网站
故事按访问次数排序
我想我正面临垃圾访问
因为有些博客的故事会在同一秒内通过传出的 IP 地址获得大量访问
我的网站不允许来自同一个 IP 的访问;然而,我的访问者不知何故改变了他们的 ips。
他们有什么解决方案来检测这种垃圾邮件访问吗?我想知道 Google adSense 是如何解决这样的问题的?
谢谢
我有一个博客聚合网站
故事按访问次数排序
我想我正面临垃圾访问
因为有些博客的故事会在同一秒内通过传出的 IP 地址获得大量访问
我的网站不允许来自同一个 IP 的访问;然而,我的访问者不知何故改变了他们的 ips。
他们有什么解决方案来检测这种垃圾邮件访问吗?我想知道 Google adSense 是如何解决这样的问题的?
谢谢
简短的回答是,如果一次未经证实的访问是改变故事顺序所需的唯一事情,就不可能阻止坚定的攻击者。您可能需要考虑实施注册用户投票系统。
但是,您可以收集几条信息并将它们全部组合起来:
1) 用户代理
2) IP 地址
3) X-Forwarded-For 标头(如果可用)
很多时候,攻击者会很懒惰,不会循环访问不同的用户代理。如果您将系统设置为以特定时间间隔(而不是实时)处理访问信息,您可能会过滤掉使用相同用户代理同时发生的大量访问。
您可以随时从 antiproxy.com 等网站下载代理数据库,但事实是,当今大多数精心策划的攻击都来自尚未记录的僵尸网络节点。您的网站完全有可能成为与普通访问者无法区分的异构流量攻击的目标。
至少,我建议更改您的实现,以便用户可以对故事进行投票并需要验证码。
使用 PHP,您可以对照 IP 地址检查 $_SERVER ["HTTP_X_FORWARDED_FOR"] 变量,以更加确定客户端就是他所说的那个人。这将有助于通过一些代理识别人员。
我有时会使用这个功能。但正如其他人所说,很难 100% 地获得正确的 IP。
我不记得我从哪里得到这个功能,但它似乎在互联网上相当普遍。
function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
您无法可靠地检测 IP。
它可能来自代理,也可能被欺骗。