数据清洗
数据清洗是指删除或者更换提交的数据的过程。处理数据时,在经过适当的验证检查后,通常采取的加强数据安全性的一个步骤就是数据清洗。 最常见的清洗方法有:
把 < 转为 entity
在内置的包 html 里面有两个方法是用来做数据清洗的,一个是用来转换 HTML 中的特殊字符,另外一个是把特殊字符转换成 HTML。
EscapeString() 接受一个字符串,返回一个转换后的字符串。比如:< 转换成 <。注意,这个函数只会转换这五个字符 <,>,&,' 还有 "。
相反的,UnescapeString() 则是将上述五个字符转换回去。
移除所有 tags
尽管 html/template 包有一个叫 stripTags() 的函数,但是它不是公开的。再加上也没有其他的内置的包支持移除所有tags,所以我们只有使用第三方库,或者你把整个函数拷贝出来使用。
下面列出的第三方库可以达成上述目的:
移除换行符,tab 和多余的空格
这个 text/template 包和这个 html/template 包都有一个通过分隔符 - 来移除模版中的空格的方法。
执行以下模版:
{{- 23}} < {{45 -}}
将输出:
23<45
注意: 如果 - 没有跟在 {{ 后面,或是 }} 前面时,它就会被认为是附加在数值上的。
以下:
{{ -3 }}
会变成:
-3
URL 请求路由
在 net/http 包中,有一个处理 HTTP 请求路由的框架,叫 ServeMux。它用来将请求对应到注册好的 pattern,然后调用对应的 handler 来处理这个请求。此外,它另外一个主要目的是处理 URL 的路由,把包含有 .、.. 或有反复的斜杠的重定向到一个等效,但是更加赶紧的 URL。
一个简单的例子如下:
func main() {mux := http.NewServeMux()rh := http.RedirectHandler("http://yourDomain.org", 307)mux.Handle("/login", rh)log.Println("Listening...")http.ListenAndServe(":3000", mux)}
第三方库:
