Drupal中关于自动封禁IP的实现

你在这里

Drupal中关于自动封禁IP的实现

http://www.thinkindrupal.com/node/5971看到一种通过实现hook_watchdog()自动封禁IP的实现方案。其主要目的是:当用户过于频繁的发起站点访问时,例如每分钟30次watchdog,自动封锁该IP地址。
具体代码如下:
function upower_core_watchdog(array $log_entry) {
//一分钟之内,30次watchdog,自动封IP
  $created_start = time() - 60;
  $ip = substr($log_entry['ip'], 0, 128);
  $sql = "SELECT count(wid) FROM {watchdog} WHERE uid=:uid AND hostname=:hostname AND timestamp > :timestamp";
  $ip_total = db_query($sql, array(':uid' => 0, ':hostname' => $ip, ':timestamp' => $created_start))->fetchField();
  if($ip_total >= 30){
    db_insert('blocked_ips')
      ->fields(array('ip' => $ip))
      ->execute();
  }
}

然而,这种方法存在以下两点问题:
1)如果使用syslog,而不启用dblog,则watchdog表中将不再存储信息
2)蜘蛛的IP地址应不再此列

 
著作权归作者所有。商业转载请联系本站作者获得授权,非商业转载请注明出处 ZZKOOK

您可能感兴趣的文章

登录以发表评论

评论

感谢作者,心疼自己。。。

 
144
烟雨南城的头像

好人好事需要大家的鼓励!

 
165
亲恩无限的头像

?!!

 
153
贝叶斯的头像

谢谢ZZKOOK的好人们!

 
141
亲恩无限的头像

矮油,不错嘛

 
149
未遂平生的头像