博客
关于我
[PHP] 频率限制类
阅读量:649 次
发布时间:2019-03-15

本文共 1310 字,大约阅读时间需要 4 分钟。

例子:实现单个IP限制60秒1次,单个关键字(如手机号)限制60秒1次或3600秒10次的频率限制。以下是基于Memcache的实现方法


首先,理解每个功能规则:IP和关键字的访问频率限制

bp>

解决方案:IP和关键字频率限制

本文将详细讲解基于Memcache的频率限制实现方法

IP限制规则解析

规则1:单个IP地址可访问60秒1次

规则2:单个关键字(如手机号)可访问60秒1次,或3600秒10次

详细分析可参考下文

Memcache存储关键

通过Memcache存储关键-间隔组合的键值,实现快速定时评估

键值结构示例:"prefix:IP:interval:count"

实现细节

使用Sina_Mail_WebAntispam类的核心功能

keyPrefix设定为统一前缀,如'selfservice:'

常规规则与验证规则的区别注意事项

实例应用

如IP'127.25.12.123'的访问次数可通过check()函数核查

分类更新频率与数据存储策略建议


具体实现为:通过Memcache存储与IP及关键字相关的计数键

PHP类功能概述:class Sina_Mail_WebAntispam {	// 常规配置项:	// 'prefix':前缀定义,如'selfservice:'	// 'key':关键字频率限制时间与限航次数	// 'ip':IP频率限制时间与限航次数	私有属性:•	$__construct($mc, $config)Private Methods:•	filterByWhitelist() - Whitelist黑名单过滤•	check() - IP和关键字频率检查•	update() - 更新计数规则核心功能:1. countLimit = configLimit * 60秒2. check IP和关键字频率是否超出限制3. 计数存储与更新机制

具体实现步骤

1..openguid: "127.25.12.123"2..openguid:IP地址对应频率计数器3. prefixes: 为IP地址添加前缀,如'selfservice:'

规则处理逻辑:

  • 检查是否在白名单中
  • 检查IP地址是否满足频率限制
  • WhiteList过滤规则优先模拟备选方案

关于Memcache存储规则

key 形式: prefix + keyPrefix + key + interval

存储结构示例:"prefix:IP:key:second"

具体实现逻辑如代码: OpCode: add, set, get, increment等


适用场景总结

1. 用于反垃圾邮件系统中的IP和手机号验证频率控制2. 防止频繁请求带来服务器负载3. decrease illegal request behavior

本文实现方法主要用于对访问敏感资源进行准入控制,提升资源安全性

转载地址:http://zqnmz.baihongyu.com/

你可能感兴趣的文章
JDK9-15新特性
查看>>
TreeSet、TreeMap
查看>>
JVM内存模型
查看>>
可变长度参数
查看>>
3、条件查询
查看>>
cordova打包apk更改图标
查看>>
GitHub上传时,项目在已有文档时直接push出现错误解决方案
查看>>
文件系统的层次结构
查看>>
减少磁盘延迟时间的方法
查看>>
vue(渐进式前端框架)
查看>>
权值初始化和与损失函数
查看>>
vscode设置eslint保存文件时自动修复eslint错误
查看>>
Remove Extra one 维护前缀最大最小值
查看>>
wgcloud运维监控系统错误:防篡改校验错误次数大于10次,不再上报数据
查看>>
Linux操作系统的安装与使用
查看>>
C++ 继承 详解
查看>>
OSPF多区域
查看>>
Docker入门之-镜像(二)
查看>>
数据结构——链表(3)
查看>>
去了解拉绳位移编码器的影响因素
查看>>