好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > go web 預防跨站腳本的實現方式

go web 預防跨站腳本的實現方式

熱門標簽:揚州電銷外呼系統軟件 開通400電話申請流程 400手機電話免費辦理 電腦外呼系統輻射大嗎 武漢百應人工智能電銷機器人 上海企業外呼系統排名 如何利用高德地圖標注家 百度地圖標注位置網站 智能語音電銷的機器人

一 點睛

現在的網站包含大量的動態內容以提高用戶體驗,比過去要復雜得多。所謂動態內容,就是根據用戶環境和需要,Web 應用程序能夠輸出相應的內容。動態站點會受到一種名為“跨站腳本攻擊”(Cross Site Scripting, 安全專家們通常將其縮寫成 XSS)的威脅,而靜態站點則完全不受其影響。

攻擊者通常會在有漏洞的程序中插入 JavaScript、VBScript、 ActiveX 或 Flash 以欺騙用戶。一旦得手,他們可以盜取用戶帳戶信息,修改用戶設置,盜取或污染 cookie 和植入惡意廣告等。

對 XSS 最佳的防護應該結合以下兩種方式。

1 驗證所有輸入數據,有效檢測攻擊。

2 對所有輸出數據進行適當的處理,以防止任何已成功注入的腳本在瀏覽器端運行。

針對第2種方式,Go 是怎樣預防的呢?Go 的 html/template 包中帶有下面幾個函數可以幫助轉義。

func HTMLEscape(w io.Writer, b []byte) // 把 b 進行轉義之后寫到 w

func HTMLEscapeString(s string) string // 轉義 s 之后返回結果字符串

func HTMLEscaper(args ...interface{}) string // 支持多個參數一起轉義,返回結果字符串

二 先看一個轉義的例子

 1 代碼

package main
 
import (
   "fmt"
   "html/template"
   "log"
   "net/http"
)
 
// 登錄邏輯
func login(w http.ResponseWriter, r *http.Request) {
   fmt.Println("method:", r.Method) // 獲取請求的方法
   if r.Method == "GET" {
      t, _ := template.ParseFiles("src\\goweb\\demo3\\login.html") // 解析模板
      t.Execute(w, nil)                                            // 渲染模板,并發送給前端
   } else {
      // 請求的是登陸數據,那么執行登陸的邏輯判斷
      // 解析表單
      r.ParseForm()
      fmt.Println("username:", r.Form["username"])
      fmt.Println("password:", r.Form["password"])
      template.HTMLEscape(w, []byte(r.Form.Get("username"))) //輸出到客戶端
   }
}
 
func main() {
   http.HandleFunc("/login", login)         // 設置訪問的路由
   err := http.ListenAndServe(":9090", nil) // 設置監聽的端口
   if err != nil {
      log.Fatal("ListenAndServe: ", err)
   }
}

2 測試

如果在瀏覽器輸入的 username 是 script>alert()/script>,在瀏覽器上將看到下面內容。

3 說明

Go 的 html/template 包默認幫忙過濾了 html 標簽,將其進行了轉義。

4 問題引出

如果要正常輸出script>alert()/script>,怎樣處理呢?text/template 可以幫忙進行處理。

三 使用 text/template 進行處理

1 代碼

package main
 
import (
   "log"
   "net/http"
   "text/template"
)
 
// 轉義測試
func escape(w http.ResponseWriter, r *http.Request) {
   // 正常顯示
   t, _ := template.New("foo").Parse(`{{define "T"}}Hello1, {{.}}!{{end}}`)
   t.ExecuteTemplate(w, "T", "script>alert('you have been pwned')/script>")
}
 
func main() {
   http.HandleFunc("/escape", escape)       // 設置轉義
   err := http.ListenAndServe(":9090", nil) // 設置監聽的端口
   if err != nil {
      log.Fatal("ListenAndServe: ", err)
   }
}

2 測試

3 說明

當使用 text/template 這個包時,可以正常顯示。

四 使用 html/template 進行處理

1 代碼

package main
 
import (
   "html/template"
   "log"
   "net/http"
)
 
// 轉義測試
func escape(w http.ResponseWriter, r *http.Request) {
   // 轉義顯示
   t, _ := template.New("foo").Parse(`{{define "T"}}Hello1, {{.}}!{{end}}`)
   t.ExecuteTemplate(w, "T", "script>alert('you have been pwned')/script>")
    // 正常顯示
   t, _ = template.New("foo").Parse(`{{define "T"}}Hello2, {{.}}!{{end}}`)
   t.ExecuteTemplate(w, "T", template.HTML("script>alert('you have been pwned')/script>"))
}
 
func main() {
   http.HandleFunc("/escape", escape)       // 設置轉義
   err := http.ListenAndServe(":9090", nil) // 設置監聽的端口
   if err != nil {
      log.Fatal("ListenAndServe: ", err)
   }
}

2 測試結果

3 說明

當使用 html/template 這個包時,如果使用 template.HTML 函數,也可以正常顯示,不使用 template.HTML 函數,轉義顯示。

以上就是go web 預防跨站腳本的詳細內容,更多關于go web 預防跨站的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • Python+Django+MySQL實現基于Web版的增刪改查的示例代碼
  • 詳解Django3中直接添加Websockets方式
  • python+Django+pycharm+mysql 搭建首個web項目詳解
  • 使用Django搭建web服務器的例子(最最正確的方式)
  • Django CSRF跨站請求偽造防護過程解析
  • Django中如何防范CSRF跨站點請求偽造攻擊的實現

標簽:武漢 延邊 新余 宜賓 江西 嘉峪關 張掖 黑龍江

巨人網絡通訊聲明:本文標題《go web 預防跨站腳本的實現方式》,本文關鍵詞  web,預防,跨站,腳本,的,實現,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《go web 預防跨站腳本的實現方式》相關的同類信息!
  • 本頁收集關于go web 預防跨站腳本的實現方式的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: chinese国产打屁股视频实践| 波多野结衣之cesd819| 法国性A片在线播放| 美女黄的免费视频| 美女露尿口| 国产福利在线看| 年轻护士女三级| 亚洲精品一区二区黄美女和男| 中国bdsm捆绑酷刑| 会痛的17岁免费播放| 一级露B歌舞团视频表演| 女m跪下被主人玩到尿失禁| 2828高清完整版在线观看| 同人h肉文| 在线暗拗女稀缺精品视频| 健身房被脔到高潮H| 男人j进女人j一进一出| 手机看日韩毛片福利盒子| 国语日韩欧美中文久久| 波多野结衣痴女cojd208| 日本少妇被黑人嗷嗷叫换内裤 | 亚洲午夜精品一区二区三区他趣| **色毛片免费观看| 国产亚洲精品久久77777| 美女脱精光让男人桶到爽在线观看| A级毛片免费高清视频| 动漫h漫牝教师4在线观看| 国产精品久久一区一区| 涩涩视频一区二区三区| 911在线无码精品秘?入口火影| 午夜亚洲国产理论秋霞| 高清性色生活片| 安庆市| 老板攻秘书双性受高H| 二次元动漫人物差差差视频| 欧美午夜视频免费观看| 露双乳吃奶视频三级| 小柔性欢日记5部分| 迅雷下载的文件在哪个文件夹| 日本午夜色大片在线观看| 特黄特色一级A片|