前言
项目运营中相信每个有价值的平台系统,或多或少都受到攻击。连我们GoFly全栈开发社区都经常被攻击,导致无法正常访问。这些攻击来自各地区,各个国家、各种目的以及给系统经营者带来不同程度损失。所以在开发软件是我们不得不把安全防护考虑在开发过程每个细节中,同时希望使用框架统一处理攻击防护的安全功能,这样减少开发者开发精力、经验、成本等问题导致软件在安全防护弱的问题。为此GoFlyGen开发框架给开发者提供一个可以安装和卸载 的插拔式插件,使用时安装,不用时卸载等安全插件包。下面给开发者朋友介绍它功能使用方法。
功能:
下面5个过滤模块工具都是可以选择作用在后台指定模块(可选择多个模块,不选择模块默认全部模块)。
1. IP 黑白名单过滤模块
核心能力
- 双格式规则支持 :同时支持单个 IP 正则 、CIDR 网段两种配置,一行一条规则,# 开头为注释、空行自动忽略;
- 真实 IP 精准获取:自动解析 X-Real-IP、X-Forwarded-For 代理头,兼容多层反向代理,避免伪造 IP 绕过;
- 黑白双模式管控:
- 黑名单优先:匹配任意 IP / 网段直接拦截,返回命中的原始规则文本便于日志排查;
- 白名单强制放行:配置白名单后,仅列表内 IP 可访问,其余全部拦截;
- 高性能缓存机制:规则懒加载、读写锁分离,配置修改调用
ClearIpRuleCache()一键清空缓存,下次请求自动重载; - 模块隔离:支持配置 JSON 数组指定生效业务模块,部分接口 / 后台可单独关闭 IP 拦截。
防护场景
拦截海外攻击网段、恶意扫描肉鸡、爬虫集群、内网越权访问、固定恶意 IP 持续爆破。
2. URL 攻击特征过滤模块
核心能力
- url黑名单,可以拦截指定路径的接口。
- 检测完整请求 URL、GET 参数、POST 表单中的攻击特征;
- 内置 SQL 注入、XSS 跨站、路径遍历、恶意脚本、木马上传等 OWASP Top10 攻击正则;
- 支持自定义攻击特征黑名单,命中直接 403 拦截并返回匹配特征。
防护场景
防御 SQL 注入、跨站脚本、目录穿越、命令注入、恶意参数探测。
3. UserAgent 黑名单过滤模块
核心能力
- 请求头 UA 正则匹配,拦截恶意客户端标识;
- 支持多行自定义正则,自动过滤空 UA、扫描器、爬虫标识;
- 可指定模块生效,前端静态页面可关闭 UA 校验。
防护场景
拦截 curl、python 脚本、nmap、awvs、xray 等扫描工具、自动化爬虫、无 UA 恶意请求。
4. 区域 / 运营商过滤模块
核心能力
- IP 属地解析:基于 ipregion 库解析 IP,输出
国家|省份|城市|运营商结构化字符串; - 正则匹配规则:后台配置多行正则,不区分大小写,自动剥离
(?i)前缀存储原始匹配规则; - 黑白名单逻辑:黑名单拦截高危地区 / 境外 IP;白名单仅放行国内指定省份、运营商;
- 拦截日志携带字段:IP、完整属地信息、命中规则,方便溯源跨境攻击源。
防护场景
阻断跨境 CC 攻击、海外漏洞扫描、境外爬虫批量爬取接口、限制仅国内用户访问后台。
5. CC 限流防护模块
核心能力
- 固定滑动窗口限流:自定义窗口时长、单 IP 最大请求阈值、临时封禁时长;
- 内存 IP 统计存储:记录每个 IP 访问计数、窗口过期时间、封禁截止时间;
- 定时自动清理:10 秒协程清理过期 IP 记录,避免内存持续膨胀;
- 动态重载配置:
ClearCCRuleCache()非阻塞关闭旧清理协程,无接口卡死风险; - 拦截返回完整信息:封禁 IP、封禁截止时间、当前访问 URL、封禁时长。
防护场景
抵御 CC 高频刷接口、恶意压测、爬虫高频请求、接口爆破,大幅降低服务器负载。
安装说明:
- 在管理后台 开发者工具-代码仓找到"网站安全助手"点击安装。
- 安装完成后,在模块控制器app\controller.go 下手动添加 gf.WebsecHandler(ctx),完整代码如下:
Go
package controller
import (
"gofly/app/admin"
"gofly/app/api"
_ "gofly/app/common"
"gofly/utils/gf"
)
// 路由中间件/路由钩子-需要拦截的模块则添加,目前只有管理后台功能才需要,如admin需要权限则添加,common不需要我们就加
func RouterHandler(ctx *gf.GinCtx) {
gf.WebsecHandler(ctx)
admin.RouterHandler(ctx, "admin")
api.RouterHandler(ctx, "api")
}
注意:由于插件比较特殊 不是通用功能 框架没有为此功能开发自动添加 gf.WebsecHandler(ctx) 到RouterHandler功能,需要开发在安装和卸载插件手动添加和删除 gf.WebsecHandler(ctx) 代码。
低版本框架安装说明
1.在utils\gf\gf_files_dir.go新增
Go
// GetAllDirs 获取文文件夹全部目录
func GetAllDirs(pathname string) ([]string, error) {
rd, err := os.ReadDir(pathname)
var folders = make([]string, 0)
if err != nil {
return folders, err
}
for _, fi := range rd {
if fi.IsDir() {
folders = append(folders, fi.Name())
}
}
return folders, nil
}
插件效果图





