From f401781e3fab9e9cb305ce1e71105f98335b6552 Mon Sep 17 00:00:00 2001 From: heavensoft Date: Fri, 5 Aug 2022 07:24:38 +0000 Subject: [PATCH] update docs/uniCloud/ip-filter.md. --- docs/uniCloud/ip-filter.md | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/docs/uniCloud/ip-filter.md b/docs/uniCloud/ip-filter.md index 713f3df11..40f4dc373 100644 --- a/docs/uniCloud/ip-filter.md +++ b/docs/uniCloud/ip-filter.md @@ -1,17 +1,29 @@ > 新增于HBuilderX 3.5.4 -IP防刷功能旨在防范短时间内大量相同ip请求导致云函数或数据库无法及时响应。此功能包含两个子功能:IP黑名单、IP访问频率控制。 +IP防刷功能旨在阻止某些ip的访问和防范短时间内大量相同ip请求导致云函数或数据库无法及时响应。 + +虽然uniCloud是serverless,云函数很难被打垮。但 +1. 如果攻击者持续攻击运行耗时久的云函数,因云厂商根据GBS计费,会给开发者造成经济损失。需要在尽可能短的时间阻断云函数运行。 +2. 如果攻击访问大量数据库操作的云函数,会造成数据库整体性能下降,拖累正常用户对数据库的读写 + +IP防刷包含两个子功能: +- IP黑名单:手动拉黑某些ip。 +- IP访问频率控制:根据相同ip访问云函数的频次自动拉黑某些ip一段时间。 ## 启用IP防刷功能 1. 服务空间内开通了redis -2. 在uniCloud web控制台开启相关功能:[uniCloud web控制台](https://unicloud.dcloud.net.cn/) +2. 在uniCloud web控制台左侧导航开启ip防刷:[uniCloud web控制台](https://unicloud.dcloud.net.cn/) + +### 生效范围 +在完成上2步的服务空间中,在如下范围内支持ip防刷: -**注意** +1. 启用了redis扩展或jql扩展(jql扩展依赖了redis扩展)的云函数/云对象才会有防刷功能。未加载相关扩展库的云函数不生效。 +2. clientDB,即客户端直接发起的数据库请求也生效。 +3. 仅在客户端调用云函数/云对象时才会启用IP防刷功能。URL化、定时触发、云函数调用云函数均不触发此功能 -- 此功能对clientDB生效 -- 启用了redis扩展、jql扩展(jql扩展依赖了redis扩展)的云函数或云对象才会有防刷功能。 -- 仅在客户端callFunction调用云函数时才会启用IP防刷功能。url化、定时触发、云函数调用云函数均不触发此功能 +需要redis的原因是被拉黑的IP需要存在redis内,其key为:`unicloud:ip-black-list:set`。 +如果这些信息存在MongoDB中其实没有防刷的意义,而redis作为内存数据库,访问速度极快且不按照访问次数计费,是最佳方案。 ## IP黑名单@ip-black-list -- GitLab