golang防xss注入


golang  用html包
html.escapeString(content)
html.UnescapeString(content)
解开和反解的字符相同 包括’,”,&,<,>这些字符

EscapeString避免XSS攻击


html的EscapeString 和 UnescapeString 函数实现
package main
import (
    "fmt"
    "html"
)
func main() {
    str1 := "<script>alert(2)</script>"
    str2 := html.EscapeString(str1)
    fmt.Println(str2)
    str3 := html.UnescapeString(str2)
    fmt.Println(str3)
}
运行
&lt;script&gt;alert(2)&lt;/script&gt;
<script>alert(2)</script>
html/template 包html转义
package main
import (
    "fmt"
    "html/template"
    "log"
    "net/http"
)
func main() {//绑定路由 讲访问/ 绑定给  Handler 方法进行处理
    http.HandleFunc("/", Handler)
    http.ListenAndServe(":8080", nil)
}
func Handler(w http.ResponseWriter, req *http.Request) {
    err := req.ParseForm()
    if err != nil {//解析失败 退出 输出错误原因
        log.Fatal(nil)
    }
    user_pro := req.FormValue("name")    //获取 name 参数
    fmt.Fprintf(w, "%s", xss_hander(user_pro))
}
func xss_hander(s string) string {
    return template.HTMLEscapeString(s)