本文介绍了在Golang实施XSS保护的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用Golang构造一个API REST。我有一个包含许多字段(超过100个)的结构,因此我使用gorilla/schema
将来自客户端的值赋给该结构,这非常好用。
我正在考虑只对字符串字段中的结构感兴趣,并使其类似于:
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:"<script>alert('foo');</script>"}
请注意,html包中有一个EscapeString
函数。不需要实现您自己的。 这篇关于在Golang实施XSS保护的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!