Ai
1 Star 0 Fork 0

jamespi/drone_dispatch

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
input_validator.go 2.05 KB
一键复制 编辑 原始数据 按行查看 历史
jamespi 提交于 2025-12-10 20:44 +08:00 . Security Upgrade
package validator
import (
"fmt"
"net/url"
"regexp"
)
// InputValidator 输入验证器
type InputValidator struct {
}
// NewInputValidator 创建输入验证器
func NewInputValidator() *InputValidator {
return &InputValidator{}
}
// ValidateUUID 验证UUID格式
func (iv *InputValidator) ValidateUUID(uuid string) error {
if uuid == "" {
return fmt.Errorf("UUID不能为空")
}
// UUID格式验证
uuidRegex := regexp.MustCompile(`^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$`)
if !uuidRegex.MatchString(uuid) {
return fmt.Errorf("UUID格式无效: %s", uuid)
}
return nil
}
// ValidateDeviceSN 验证设备序列号
func (iv *InputValidator) ValidateDeviceSN(sn string) error {
if sn == "" {
return fmt.Errorf("设备序列号不能为空")
}
// 设备序列号长度限制
if len(sn) > 35 {
return fmt.Errorf("设备序列号长度超限: %d", len(sn))
}
// 只允许字母、数字和特定符号
snRegex := regexp.MustCompile(`^[a-zA-Z0-9_-]+$`)
if !snRegex.MatchString(sn) {
return fmt.Errorf("设备序列号包含非法字符: %s", sn)
}
return nil
}
// ValidateProjectName 验证项目名称
func (iv *InputValidator) ValidateProjectName(name string) error {
if name == "" {
return fmt.Errorf("名称不能为空")
}
// 长度限制
if len(name) > 35 {
return fmt.Errorf("名称长度超限: %d", len(name))
}
return nil
}
// ValidateQueryParam 验证查询参数
func (iv *InputValidator) ValidateQueryParam(param string) error {
if param == "" {
return fmt.Errorf("查询参数不能为空")
}
// 长度限制
if len(param) > 100 {
return fmt.Errorf("查询参数长度超限: %d", len(param))
}
// url编码验证
if _, err := url.QueryUnescape(param); err != nil {
return fmt.Errorf("查询参数编码无效: %s", param)
}
return nil
}
// 全局验证器实例
var globalInputValidator *InputValidator
// 初始化全局验证器
func GetValidator() *InputValidator {
if globalInputValidator == nil {
globalInputValidator = NewInputValidator()
}
return globalInputValidator
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/jamespi/drone_dispatch.git
git@gitee.com:jamespi/drone_dispatch.git
jamespi
drone_dispatch
drone_dispatch
v0.2.3

搜索帮助