新增onlyword字段设置

This commit is contained in:
2025-10-14 10:45:23 +08:00
parent a752ef543c
commit 19585af99f

View File

@@ -68,17 +68,29 @@ var (
) )
var safePropertyRE = regexp.MustCompile( var safePropertyRE = regexp.MustCompile(`[/"'\\\/]`)
`["'\\\/\s]` +
`|\\[tnrfbv\\]` + // 转义字面量 // 设置某些字段只允许包含字母、数字和下划线
`|[\x00-\x1F\x7F-\x9F]` + // ASCII + C1 控制字符 var onlyWordRE = regexp.MustCompile(`\W`)
`|[\\u200B-\\u200D\\uFEFF]`, // 零宽字符 var onlyWordPropertyNames = map[string]struct{}{
) "nickname": {},
}
func SetOnlyWordProperty(propertyNames ...string) {
for _, propertyName := range propertyNames {
onlyWordPropertyNames[propertyName] = struct{}{}
}
}
func safeProperty(property map[string]any) { func safeProperty(property map[string]any) {
for k, v := range property { for k, v := range property {
if _, ok := onlyWordPropertyNames[k]; ok {
if _, ok := v.(string); ok { if _, ok := v.(string); ok {
property[k] = onlyWordRE.ReplaceAllString(gconv.String(v), "_")
}
} else {
property[k] = safePropertyRE.ReplaceAllString(gconv.String(v), "*") property[k] = safePropertyRE.ReplaceAllString(gconv.String(v), "*")
} }
} }
} }