文章整理中……
实现思路
- 当服务器接收到的单个IP并发超出阀值, 加入封禁区(弹回2).
- 服务器根据IP、UA、SESSION_ID、年、月、日、时、分、…进行唯一哈希, 输出成
\x00\x01
类似的JS容易理解的数据.- 多次随机数, 加大破解难度.
- 若浏览器仍死不悔改, 继续弹回.
技术细节
- 单个IP并发超限, 触发limit_req规则, 在nginx内存中标识此ip的屏蔽过期时间, forbid_action=进入js混淆区.
- 由ip、ua、session_id、date进行哈希, 并用nginx模块进行escape化, 输出到浏览器.
- 用set_random输出多个随机数, 防止被脚本破解.
- 如果浏览器成功将哈希请求到nginx, limit_req_clear.
规则细节
- 当单个IP并发3秒钟内超过30, 并连续发生3次, 封禁300秒
- 当单个IP并发5秒钟内超过50, 并连续发生5次, 封禁3600秒
- 当单个IP并发10秒钟内超过100, 并连续发生6次, 封禁86400秒
上述所有的
封禁
均是指弹回加密的js, 让浏览器执行.
http{
}