1.1 输入校验

1.1.1【必须】按类型进行数据校验

  • 所有外部输入的参数,应使用validator进行白名单校验,校验内容包括但不限于数据长度、数据范围、数据类型与格式,校验不通过的应当拒绝
  1. // good
  2. import (
  3. "fmt"
  4. "github.com/go-playground/validator/v10"
  5. )
  6. var validate *validator.Validate
  7. validate = validator.New()
  8. func validateVariable() {
  9. myEmail := "abc@tencent.com"
  10. errs := validate.Var(myEmail, "required,email")
  11. if errs != nil {
  12. fmt.Println(errs)
  13. return
  14. //停止执行
  15. }
  16. // 验证通过,继续执行
  17. ...
  18. }
  • 无法通过白名单校验的应使用html.EscapeStringtext/templatebluemonday<, >, &, ',"等字符进行过滤或编码
  1. import(
  2. "text/template"
  3. )
  4. // TestHTMLEscapeString HTML特殊字符转义
  5. func main(inputValue string) string{
  6. escapedResult := template.HTMLEscapeString(inputValue)
  7. return escapedResult
  8. }