You are here

IP黑名单

g089h515r806 的头像
Submitted by g089h515r806 on 星期三, 2016-03-16 05:47

 

如果遇到了恶意的IP访问,我们通常会手动的将其封禁。阻止这个IP用户的继续访问。恶意用户很多。

在后台,手动封禁IP的办法:

导航到admin/config/people/ip-blocking,在这里输入要封禁的IP,点击添加即可。

 

如果有很多这样的用户,怎么办,可以采用代码的形式:

      db_insert('blocked_ips')

              ->fields(array('ip' => $ip))

              ->execute();

 

一个比较好的办法,是根据访问日志,进行判断:

/**

 * Implements hook_watchdog().

 */

function mymodule_watchdog(array $log_entry) {

  //一分钟之内,30watchdog,自动封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 >= 10){

      db_insert('blocked_ips')

              ->fields(array('ip' => $ip))

              ->execute();

  }       

}

 

对于一些IP地址,如果存在数据库里面的话,比较耗费资源,可以考虑在settings.php文件里面,通过设置变量:

$conf['blocked_ips'] = array(

   '123.123.123.123',

 );


论坛:

Drupal版本: