1.1 输入校验
1.1.1【必须】按类型进行数据校验
- 所有外部输入的参数,应使用
validator
进行白名单校验,校验内容包括但不限于数据长度、数据范围、数据类型与格式,校验不通过的应当拒绝
// good
import (
"fmt"
"github.com/go-playground/validator/v10"
)
var validate *validator.Validate
validate = validator.New()
func validateVariable() {
myEmail := "abc@tencent.com"
errs := validate.Var(myEmail, "required,email")
if errs != nil {
fmt.Println(errs)
return
//停止执行
}
// 验证通过,继续执行
...
}
- 无法通过白名单校验的应使用
html.EscapeString
、text/template
或bluemonday
对<, >, &, ',"
等字符进行过滤或编码
import(
"text/template"
)
// TestHTMLEscapeString HTML特殊字符转义
func main(inputValue string) string{
escapedResult := template.HTMLEscapeString(inputValue)
return escapedResult
}