欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > php >内容正文

php

PHP应对洪水般的恶意访问接口 访问冲击

发布时间:2024/9/19 php 50 豆豆
生活随笔 收集整理的这篇文章主要介绍了 PHP应对洪水般的恶意访问接口 访问冲击 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

1 / 验证码(最简单有效的防护),采用点触验证,滑动验证或第三方验证码服务、

2 / 归属地,检测IP所在地是否与手机号归属地匹配;IP所在地是否是为常在地
3 / 可疑用户,对于可疑用户要求其主动发短信(或其他主动行为)来验证身份

4 / 黑名单用户,对于黑名单用户,限制其操作,API接口直接返回success,1可以避免浪费资源,2混淆黑户判断

5 /  https,token

6 / 频率,限制同设备,同IP等发送次数,单点时间范围可请求时长

 

设置频率

public function checkRequest($ip){#一分钟接口调用只能10次$redis= new \Redis();$redis->open('xxx',6379);//服务器连接的Ip与端口号$redis->auth('xxx');//redis服务的密码$redis->select(1);//选择连接的redis,默认redis的库有16个 // $redis->flushAll();exit;//清空redis的所有库$lock_time=$redis->zScore('user_list',$ip);//返回有序集中key中成员member的scoreif(time()-$lock_time<3000){return 1;//在黑名单中}else{$redis->zRem('user_list',$ip);//redis中zRem命令用于移除有序集合中的一个或者是多个成员,不存在的成员将被忽略,当key存在但是不是有序集合类型是,返回一个错误}#记录访问次数$ip_value=$redis->get($ip);//get命令用于获取指定的keyz值,如果key值不存在返回nullif(!$ip_value){#设置key自增$redis->incr($ip);//将key中存储的数字值增1#设置过期时间为3000秒$redis->expire($ip,3000);//给key值设置生存时间}else{$redis->incr($ip);}#集合里边的元素不会重复 字符串#把ip当做key 存入redis 存5分钟if($ip_value>10){#使用有序集合$redis->zAdd('user_list',time(),$ip);//命令用于将一个或者是多个于是怒以及分数值加入到有序集合中return 2;//调用接口频繁}}

 

总结

以上是生活随笔为你收集整理的PHP应对洪水般的恶意访问接口 访问冲击的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。