PHP+memcached+cloudflare可以达到很强防御效果,在我给一个客户定制的方案中就使用了这个方法
首先调整CLOUDFLARE的防御参数,然后安装MEMCACHED,然后设置RAILGUN,再优化网站代码,这里使用MEMCAHED的键值队列功能实现,原理与我们上一篇介绍的使用redis类似,只是方法改成用memcahed
代码案例如下:
if(class_exists('Memcached')){
$IPmax=5;//每60秒钟允许5个注册请求
$IPtime=60;//每60秒钟允许5个注册请求
$ipfromcf=$_SERVER['HTTP_CF_CONNECTING_IP'];//这里是配合cdn.bnxb.com接入CF,所以读取CF传来的IP
$memcached = new Memcached();
$memcached->addServer('127.0.0.1',11211); // 连接服务器
$memcached->setOption(Memcached::OPT_COMPRESSION, false);
$num = $memcached->get($ipfromcf);
if(!$num){$num=1;}else{$num=$num+1;}
//echo $num;
if($num>$IPmax){
exit('bnxb.com 笨 牛 网提醒您:您访问频率过高,访问超限!');
}
$memcached->set($ipfromcf,$num,$IPtime);
$memcached->quit();
}
//这里放入需要执行的代码部分,比如查询数据库的操作
?>
通过这样优化,可以对反复调用你网站API接口,或者CC攻击你网站的人的IP,进行短时间屏蔽,不进行后续费资源的数据库查询操作