Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
unidocs-zh
提交
a87e0e40
unidocs-zh
项目概览
DCloud
/
unidocs-zh
通知
3598
Star
108
Fork
921
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
120
列表
看板
标记
里程碑
合并请求
109
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
120
Issue
120
列表
看板
标记
里程碑
合并请求
109
合并请求
109
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
a87e0e40
编写于
11月 16, 2023
作者:
WangMoYang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update: ip-filter.md
上级
4364d279
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
49 addition
and
14 deletion
+49
-14
docs/uniCloud/ip-filter.md
docs/uniCloud/ip-filter.md
+49
-14
未找到文件。
docs/uniCloud/ip-filter.md
浏览文件 @
a87e0e40
> 仅本地调试时需HBuilderX 3.5.4+。云端无版本限制,在uniCloud web控制台打开ip防刷即可
IP防刷功能旨在阻止某些ip的访问和防范短时间内大量相同ip请求导致云函数或数据库无法及时响应。
IP防刷功能旨在阻止某些ip的访问和防范短时间内大量相同ip请求导致云函数或数据库无法及时响应。
虽然uniCloud是serverless,云函数很难被打垮。但
虽然uniCloud是serverless,云函数很难被打垮。但
...
@@ -12,16 +10,26 @@ IP防刷包含两个子功能:
...
@@ -12,16 +10,26 @@ IP防刷包含两个子功能:
-
IP黑名单:手动拉黑某些ip。
-
IP黑名单:手动拉黑某些ip。
-
IP访问频率控制:根据相同ip访问云函数的频次自动拉黑某些ip一段时间。
-
IP访问频率控制:根据相同ip访问云函数的频次自动拉黑某些ip一段时间。
**注意**
目前实现的方案有两种:
-
基于Redis:服务空间开通Redis后,利用Redis的高并发及存储机制来实现。
-
云厂商支持:不需要开通Redis,IP防刷机制依赖云厂商网关。
阿里云、腾讯云未提供网关层面的IP防刷功能,所以需要开通Redis来采用基于Redis的方案。该方案是在云函数中执行IP防刷功能相关的逻辑,
**因此在拒绝IP请求时也会消耗最小计费单元(配置的内存*100ms)的GBs**
。
支付宝小程序云提供的是网关层面的IP防刷功能,不需要依赖Redis,命中防刷规则的请求会自动被网关拦截不会进入云函数执行逻辑,
**因此不会消耗GBs,被拒的请求在云函数内也查不到请求日志**
。
## 基于Redis(阿里&腾讯云)
> 仅本地调试时需HBuilderX 3.5.4+。云端无版本限制,在uniCloud web控制台打开ip防刷即可
> 基于Redis方案适用于阿里云、腾讯云服务空间
-
IP防刷功能相关的逻辑也是在云函数内执行的,因此在拒绝IP请求时也会消耗最小计费单元(配置的内存
*
100ms)的GBs
## 启用IP防刷功能
##
#
启用IP防刷功能
1.
服务空间内开通了redis
1.
服务空间内开通了redis
2.
在uniCloud web控制台左侧导航开启ip防刷:
[
uniCloud web控制台
](
https://unicloud.dcloud.net.cn/
)
2.
在uniCloud web控制台左侧导航开启ip防刷:
[
uniCloud web控制台
](
https://unicloud.dcloud.net.cn/
)
### 生效范围
###
#
生效范围
在完成上2步的服务空间中,在如下范围内支持ip防刷:
在完成上2步的服务空间中,在如下范围内支持ip防刷:
1.
启用了redis扩展或jql扩展(jql扩展依赖了redis扩展)的云函数/云对象才会有防刷功能。未加载相关扩展库的云函数不生效。
1.
启用了redis扩展或jql扩展(jql扩展依赖了redis扩展)的云函数/云对象才会有防刷功能。未加载相关扩展库的云函数不生效。
...
@@ -31,7 +39,7 @@ IP防刷包含两个子功能:
...
@@ -31,7 +39,7 @@ IP防刷包含两个子功能:
需要redis的原因是被拉黑的IP需要存在redis内,其key为:
`unicloud:ip-black-list:set`
。
需要redis的原因是被拉黑的IP需要存在redis内,其key为:
`unicloud:ip-black-list:set`
。
如果这些信息存在MongoDB中其实没有防刷的意义,而redis作为内存数据库,访问速度极快且不按照访问次数计费,是最佳方案。
如果这些信息存在MongoDB中其实没有防刷的意义,而redis作为内存数据库,访问速度极快且不按照访问次数计费,是最佳方案。
## IP黑名单@ip-black-list
##
#
IP黑名单@ip-black-list
IP黑名单是用来完全阻止设定的IP或IP网段(cidr规范)访问云函数或clientDB的功能。
IP黑名单是用来完全阻止设定的IP或IP网段(cidr规范)访问云函数或clientDB的功能。
...
@@ -60,22 +68,22 @@ try {
...
@@ -60,22 +68,22 @@ try {
}
}
```
```
### IP网段规则
###
#
IP网段规则
通常书写IPv4地址时会将IPv4地址写成由点分割的四段数字,每段取值范围为0-255。IP网段则是由IP加掩码位数组成的字符串,用于表示一个IP区间。
通常书写IPv4地址时会将IPv4地址写成由点分割的四段数字,每段取值范围为0-255。IP网段则是由IP加掩码位数组成的字符串,用于表示一个IP区间。
以
`192.168.12.1/20`
为例,要计算其表示的IP区间可以先将四段IP转为二进制(每段不足8位的往前补0)
`11000000.10101000.00001100.00000001`
,掩码位数20则表示经过此规则转化后的IP只要前20位和
`192.168.12.1`
转换后相同则此IP在
`192.168.12.1/20`
这个IP网段内。即IP区间为
`11000000.10101000.00000000.00000000`
(192.168.0.0) -
`11000000.10101000.00001111.11111111`
(192.168.15.255)
以
`192.168.12.1/20`
为例,要计算其表示的IP区间可以先将四段IP转为二进制(每段不足8位的往前补0)
`11000000.10101000.00001100.00000001`
,掩码位数20则表示经过此规则转化后的IP只要前20位和
`192.168.12.1`
转换后相同则此IP在
`192.168.12.1/20`
这个IP网段内。即IP区间为
`11000000.10101000.00000000.00000000`
(192.168.0.0) -
`11000000.10101000.00001111.11111111`
(192.168.15.255)
### 黑名单用到的Redis key
###
#
黑名单用到的Redis key
开发者配置的黑名单会以Set类型存储在redis内,其key为:
`unicloud:ip-black-list:set`
开发者配置的黑名单会以Set类型存储在redis内,其key为:
`unicloud:ip-black-list:set`
### 注意事项
###
#
注意事项
-
切换开关状态会更新所有依赖或间接依赖redis扩展的云函数及clientDB
-
切换开关状态会更新所有依赖或间接依赖redis扩展的云函数及clientDB
-
一个区域内的多个用户可能拥有同一IP
-
一个区域内的多个用户可能拥有同一IP
## IP访问频率控制@ip-freq
##
#
IP访问频率控制@ip-freq
IP访问频率控制用于限制单个IP访问云函数的频率。如图所示,开发者可以配置
`${duration}秒内请求超过${limit}次,则将会临时封禁${blockTime}秒`
。
IP访问频率控制用于限制单个IP访问云函数的频率。如图所示,开发者可以配置
`${duration}秒内请求超过${limit}次,则将会临时封禁${blockTime}秒`
。
...
@@ -109,7 +117,7 @@ try {
...
@@ -109,7 +117,7 @@ try {
}
}
```
```
### IP访问频率控制用到的Redis key
###
#
IP访问频率控制用到的Redis key
**访问频率控制配置**
**访问频率控制配置**
...
@@ -144,8 +152,35 @@ IP频率控制信息的以hash类型存储在redis内,key为:`unicloud:ip-in
...
@@ -144,8 +152,35 @@ IP频率控制信息的以hash类型存储在redis内,key为:`unicloud:ip-in
其值为临时封禁开始的时间戳
其值为临时封禁开始的时间戳
### 注意事项
###
#
注意事项
-
切换开关状态会更新所有依赖或间接依赖redis扩展的云函数及clientDB
-
切换开关状态会更新所有依赖或间接依赖redis扩展的云函数及clientDB
-
一个区域内的多个用户可能拥有同一IP
-
一个区域内的多个用户可能拥有同一IP
-
本地调试期间如果开启或关闭了IP防刷功能,应停止所有客户端等待5秒重新运行才可生效
-
本地调试期间如果开启或关闭了IP防刷功能,应停止所有客户端等待5秒重新运行才可生效
\ No newline at end of file
## 支付宝小程序云
在uniCloud web控制台左侧导航开启ip防刷:
[
uniCloud web控制台
](
https://unicloud.dcloud.net.cn/
)
,IP防刷配置项修改大约需要3分钟生效。

IP访问频率控制用于限制单个IP访问云函数的频率,可实现 x 秒内请求超过 y 次,则超限制的请求会被临时封禁 z 秒。
x取值范围:60-86400(秒),y取值范围:100-99999999(次),z取值范围:60-259200(秒)。
### IP信息列表@ip-info-list
列表类型分为三种:
-
黑名单IP:手动添加到黑名单的IP/IP段,该类IP发起的请求会自动被网关拒绝
-
命中防刷规则的IP:命中
`同IP请求频率限制`
的IP会自动被添加到该列表,支持手动解禁
-
访问最多的IP:可查询访问云函数最多的IP及访问次数,仅支持查询近7天访问数据
被封禁IP访问云函数及clientDB时会收到http状态码为500的错误响应,错误码为:
`50050`
,错误信息为:
`防刷限流异常-触发黑名单规则`
,内容如下:
```
json
{
"errDetail"
:
"Anti Brushing RateLimit Error, Please Check The black list configs : anti_brushing_rateLimit blacklist configs limited"
,
"errCode"
:
"50050"
,
"errMsg"
:
"防刷限流异常-触发黑名单规则"
}
```
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录