博客
关于我
[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/

你可能感兴趣的文章
word文档注入(追踪word文档)未完
查看>>
作为我的第一篇csdn博客吧
查看>>
ajax异步提交失败
查看>>
打开cmd,输入java,java -version没有问题,但是javac提示不是内部命令?
查看>>
一道简单的访问越界、栈溢出pwn解题记录
查看>>
ubuntu18.04.4版本安装docker教程
查看>>
Stream 某些API
查看>>
关于项目中 对Java 的为空判断整理
查看>>
测试调用另一台电脑ip是否有用
查看>>
mos-excel集成文档
查看>>
chat 快问!
查看>>
3.jdk的环境配置
查看>>
2.连接池
查看>>
2.Html与CSS
查看>>
3&4.javascript
查看>>
6.Xml
查看>>
7.tomcat_servlet
查看>>
3.Ajax&Json
查看>>
Linux总结
查看>>
格式化的盘要如何恢复文件
查看>>