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