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)
}
运行
<script>alert(2)</script>
<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)
}
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题