在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ GO/ 9.3 避免XSS攻擊
7 文本處理
3 Web基礎(chǔ)
14 擴(kuò)展Web框架
10.4 小結(jié)
2.2 Go基礎(chǔ)
2.8 總結(jié)
6.1 session和cookie
5.5 使用beedb庫(kù)進(jìn)行ORM開發(fā)
8.3 REST
13.6 小結(jié)
5.4 使用PostgreSQL數(shù)據(jù)庫(kù)
14.6 pprof支持
14.1 靜態(tài)文件支持
11.2 使用GDB調(diào)試
7.7 小結(jié)
1 GO環(huán)境配置
14.5 多語(yǔ)言支持
7.1 XML處理
1.5 總結(jié)
13 如何設(shè)計(jì)一個(gè)Web框架
14.3 表單及驗(yàn)證支持
12 部署與維護(hù)
10 國(guó)際化和本地化
1.1 Go 安裝
6.2 Go如何使用session
5.6 NOSQL數(shù)據(jù)庫(kù)操作
6.5 小結(jié)
9.4 避免SQL注入
12.1 應(yīng)用日志
4.2 驗(yàn)證表單的輸入
10.1 設(shè)置默認(rèn)地區(qū)
1.3 Go 命令
9.6 加密和解密數(shù)據(jù)
4.1 處理表單的輸入
4.4 防止多次遞交表單
11.3 Go怎么寫測(cè)試用例
8 Web服務(wù)
12.3 應(yīng)用部署
5.7 小結(jié)
12.5 小結(jié)
11 錯(cuò)誤處理,調(diào)試和測(cè)試
9.2 確保輸入過(guò)濾
14.2 Session支持
6.4 預(yù)防session劫持
12.4 備份和恢復(fù)
8.1 Socket編程
13.1 項(xiàng)目規(guī)劃
13.4 日志和配置設(shè)計(jì)
7.6 字符串處理
13.2 自定義路由器設(shè)計(jì)
6.3 session存儲(chǔ)
3.4 Go的http包詳解
8.2 WebSocket
10.3 國(guó)際化站點(diǎn)
7.5 文件操作
7.4 模板處理
9.1 預(yù)防CSRF攻擊
13.3 controller設(shè)計(jì)
2.6 interface
14.4 用戶認(rèn)證
2.3 流程和函數(shù)
附錄A 參考資料
11.1 錯(cuò)誤處理
9.5 存儲(chǔ)密碼
9.3 避免XSS攻擊
12.2 網(wǎng)站錯(cuò)誤處理
6 session和數(shù)據(jù)存儲(chǔ)
2.4 struct類型
3.3 Go如何使得Web工作
2.5 面向?qū)ο?/span>
3.1 Web工作方式
1.2 GOPATH與工作空間
2.1 你好,Go
9.7 小結(jié)
13.5 實(shí)現(xiàn)博客的增刪改
7.2 JSON處理
10.2 本地化資源
7.3 正則處理
2 Go語(yǔ)言基礎(chǔ)
5.1 database/sql接口
4.5 處理文件上傳
8.5 小結(jié)
4.3 預(yù)防跨站腳本
5.3 使用SQLite數(shù)據(jù)庫(kù)
14.7 小結(jié)
3.2 Go搭建一個(gè)Web服務(wù)器
2.7 并發(fā)
5 訪問數(shù)據(jù)庫(kù)
4 表單
3.5 小結(jié)
1.4 Go開發(fā)工具
11.4 小結(jié)
9 安全與加密
5.2 使用MySQL數(shù)據(jù)庫(kù)
4.6 小結(jié)
8.4 RPC

9.3 避免XSS攻擊

隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,現(xiàn)在的Web應(yīng)用都含有大量的動(dòng)態(tài)內(nèi)容以提高用戶體驗(yàn)。所謂動(dòng)態(tài)內(nèi)容,就是應(yīng)用程序能夠根據(jù)用戶環(huán)境和用戶請(qǐng)求,輸出相應(yīng)的內(nèi)容。動(dòng)態(tài)站點(diǎn)會(huì)受到一種名為“跨站腳本攻擊”(Cross Site Scripting, 安全專家們通常將其縮寫成 XSS)的威脅,而靜態(tài)站點(diǎn)則完全不受其影響。

什么是XSS

XSS攻擊:跨站腳本攻擊(Cross-Site Scripting),為了不和層疊樣式表(Cascading Style Sheets, CSS)的縮寫混淆,故將跨站腳本攻擊縮寫為XSS。XSS是一種常見的web安全漏洞,它允許攻擊者將惡意代碼植入到提供給其它用戶使用的頁(yè)面中。不同于大多數(shù)攻擊(一般只涉及攻擊者和受害者),XSS涉及到三方,即攻擊者、客戶端與Web應(yīng)用。XSS的攻擊目標(biāo)是為了盜取存儲(chǔ)在客戶端的cookie或者其他網(wǎng)站用于識(shí)別客戶端身份的敏感信息。一旦獲取到合法用戶的信息后,攻擊者甚至可以假冒合法用戶與網(wǎng)站進(jìn)行交互。

XSS通??梢苑譃閮纱箢悾阂活愂谴鎯?chǔ)型XSS,主要出現(xiàn)在讓用戶輸入數(shù)據(jù),供其他瀏覽此頁(yè)的用戶進(jìn)行查看的地方,包括留言、評(píng)論、博客日志和各類表單等。應(yīng)用程序從數(shù)據(jù)庫(kù)中查詢數(shù)據(jù),在頁(yè)面中顯示出來(lái),攻擊者在相關(guān)頁(yè)面輸入惡意的腳本數(shù)據(jù)后,用戶瀏覽此類頁(yè)面時(shí)就可能受到攻擊。這個(gè)流程簡(jiǎn)單可以描述為:惡意用戶的Html輸入Web程序->進(jìn)入數(shù)據(jù)庫(kù)->Web程序->用戶瀏覽器。另一類是反射型XSS,主要做法是將腳本代碼加入U(xiǎn)RL地址的請(qǐng)求參數(shù)里,請(qǐng)求參數(shù)進(jìn)入程序后在頁(yè)面直接輸出,用戶點(diǎn)擊類似的惡意鏈接就可能受到攻擊。

XSS目前主要的手段和目的如下:

  • 盜用cookie,獲取敏感信息。
  • 利用植入Flash,通過(guò)crossdomain權(quán)限設(shè)置進(jìn)一步獲取更高權(quán)限;或者利用Java等得到類似的操作。
  • 利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻擊者)用戶的身份執(zhí)行一些管理動(dòng)作,或執(zhí)行一些如:發(fā)微博、加好友、發(fā)私信等常規(guī)操作,前段時(shí)間新浪微博就遭遇過(guò)一次XSS。
  • 利用可被攻擊的域受到其他域信任的特點(diǎn),以受信任來(lái)源的身份請(qǐng)求一些平時(shí)不允許的操作,如進(jìn)行不當(dāng)?shù)耐镀被顒?dòng)。
  • 在訪問量極大的一些頁(yè)面上的XSS可以攻擊一些小型網(wǎng)站,實(shí)現(xiàn)DDoS攻擊的效果

XSS的原理

Web應(yīng)用未對(duì)用戶提交請(qǐng)求的數(shù)據(jù)做充分的檢查過(guò)濾,允許用戶在提交的數(shù)據(jù)中摻入HTML代碼(最主要的是“>”、“<”),并將未經(jīng)轉(zhuǎn)義的惡意代碼輸出到第三方用戶的瀏覽器解釋執(zhí)行,是導(dǎo)致XSS漏洞的產(chǎn)生原因。

接下來(lái)以反射性XSS舉例說(shuō)明XSS的過(guò)程:現(xiàn)在有一個(gè)網(wǎng)站,根據(jù)參數(shù)輸出用戶的名稱,例如訪問url:http://127.0.0.1/?name=astaxie,就會(huì)在瀏覽器輸出如下信息:

hello astaxie

如果我們傳遞這樣的url:http://127.0.0.1/?name=&#60;script&#62;alert(&#39;astaxie,xss&#39;)&#60;/script&#62;,這時(shí)你就會(huì)發(fā)現(xiàn)瀏覽器跳出一個(gè)彈出框,這說(shuō)明站點(diǎn)已經(jīng)存在了XSS漏洞。那么惡意用戶是如何盜取Cookie的呢?與上類似,如下這樣的url:http://127.0.0.1/?name=&#60;script&#62;document.location.+document.cookie&#60;/script&#62;,這樣就可以把當(dāng)前的cookie發(fā)送到指定的站點(diǎn):www.xxx.com。你也許會(huì)說(shuō),這樣的URL一看就有問題,怎么會(huì)有人點(diǎn)擊?,是的,這類的URL會(huì)讓人懷疑,但如果使用短網(wǎng)址服務(wù)將之縮短,你還看得出來(lái)么?攻擊者將縮短過(guò)后的url通過(guò)某些途徑傳播開來(lái),不明真相的用戶一旦點(diǎn)擊了這樣的url,相應(yīng)cookie數(shù)據(jù)就會(huì)被發(fā)送事先設(shè)定好的站點(diǎn),這樣子就盜得了用戶的cookie信息,然后就可以利用Websleuth之類的工具來(lái)檢查是否能盜取那個(gè)用戶的賬戶。

更加詳細(xì)的關(guān)于XSS的分析大家可以參考這篇叫做《新浪微博XSS事件分析》的文章。

如何預(yù)防XSS

答案很簡(jiǎn)單,堅(jiān)決不要相信用戶的任何輸入,并過(guò)濾掉輸入中的所有特殊字符。這樣就能消滅絕大部分的XSS攻擊。

目前防御XSS主要有如下幾種方式:

  • 過(guò)濾特殊字符

    避免XSS的方法之一主要是將用戶所提供的內(nèi)容進(jìn)行過(guò)濾,Go語(yǔ)言提供了HTML的過(guò)濾函數(shù):

    text/template包下面的HTMLEscapeString、JSEscapeString等函數(shù)

  • 使用HTTP頭指定類型

    w.Header().Set("Content-Type","text/javascript")

    這樣就可以讓瀏覽器解析javascript代碼,而不會(huì)是html輸出。

總結(jié)

XSS漏洞是相當(dāng)有危害的,在開發(fā)Web應(yīng)用的時(shí)候,一定要記住過(guò)濾數(shù)據(jù),特別是在輸出到客戶端之前,這是現(xiàn)在行之有效的防止XSS的手段。