新增onlyword字段设置
This commit is contained in:
@@ -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 := v.(string); ok {
|
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), "*")
|
property[k] = safePropertyRE.ReplaceAllString(gconv.String(v), "*")
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user