在Golang中实施XSS保护

我正在使用Golang来构建API

Rest。我有一个包含很多字段的结构(超过100个),因此我使用了来自客户端的值来分配给该结构gorilla/schema,效果很好。

现在,我要避免用户在任何字符串字段中插入Javascript代码,在结构中我定义了bool,strings,byte

[]和int值。因此,现在我想知道验证这一点的最佳方法是什么。

我正在考虑仅在字符串字段中对结构进行interate并进行如下操作:

Loop over the struct {

myProperty := JSEscapeString(myProperty)

}

可以吗 在那种情况下,我该如何遍历该结构,而仅是字符串字段?

回答:

您可以使用反射来遍历字段并转义字符串字段。例如:

myStruct := struct {

IntField int

StringField string

} {

IntField: 42,

StringField: "<script>alert('foo');</script>",

}

value := reflect.ValueOf(&myStruct).Elem()

// loop over the struct

for i := 0; i < value.NumField(); i++ {

field := value.Field(i)

// check if the field is a string

if field.Type() != reflect.TypeOf("") {

continue

}

str := field.Interface().(string)

// set field to escaped version of the string

field.SetString(html.EscapeString(str))

}

fmt.Printf("%#v", myStruct)

// prints: struct { IntField int; StringField string }{IntField:42, StringField:"&lt;script&gt;alert(&#39;foo&#39;);&lt;/script&gt;"}

请注意,EscapeStringhtml包中有一个函数。无需自己实施。

以上是 在Golang中实施XSS保护 的全部内容, 来源链接: utcz.com/qa/430617.html

回到顶部