Web 安全之 XSS 攻擊

Web 安全之 XSS 攻擊

伴隨著前端技術的不斷髮展,Web 應用已經隨處可見了。隨之而來的問題就是,誰來保護用戶的隱私和網絡安全

一、網絡安全

Web 安全之 XSS 攻擊

網絡安全是指網絡系統的硬件、軟件及其系統中的數據受到保護,不因偶然的或者惡意的原因而遭受到破壞、更改、洩露,系統連續可靠正常地運行,網絡服務不中斷。

網絡安全主要有如下特徵:

1.保密性:信息不洩露給非授權用戶、實體或過程,或供其利用的特性。

2.完整性:數據未經授權不能進行改變的特性。

即信息在存儲或傳輸過程中保持不被修改、不被破壞和丟失的特性。

3.可用性:可被授權實體訪問並按需求使用的特性。

即當需要時能否存取所需的信息。例如網絡環境下拒絕服務、破壞網絡和有關係統的正常運行等都屬於對可用性的攻擊;

4.可控性

:對信息的傳播及內容具有控制能力。

5.可審查性:出現安全問題時提供依據與手段。

通過上面,我們也瞭解到網絡安全其實與我們息息相關,而作為 Web 前端開發工程師,這方面知識一定要了解,因為我們是距離用戶最近的開發者。

所以我們先從 Web 最常見的 XSS 和 CSRF 攻擊來入手吧。

這個時代軟件的特點就是:解決了用戶痛點,就能為王!

二、什麼是 XSS ?

Web 安全之 XSS 攻擊

跨站腳本攻擊(Cross Site Scripting,為了不和層疊樣式表 CSS 混淆,故將跨站腳本攻擊縮寫為 XSS)。

惡意攻擊者往 Web 頁面裡插入惡意 Script 代碼,當用戶瀏覽該頁之時,嵌入其中 Web 裡面的 Script 代碼會被執行,從而達到惡意攻擊用戶的目的。

XSS 主要有如下三種分類:

1.Reflected XSS(基於反射的 XSS 攻擊)

主要通過利用系統反饋行為漏洞,並欺騙用戶主動觸發,從而發起 Web 攻擊。

2.Stored XSS(基於存儲的 XSS 攻擊)

Stored XSS 和 Reflected XSS 的差別就在於,具有攻擊性的腳本被保存到了服務器並且可以被普通用戶完整的從服務的取得並執行,從而獲得了在網絡上傳播的能力。

3.DOM-based or local XSS(基於 DOM 或本地的 XSS 攻擊)

DOM 型 XSS 其實是一種特殊類型的反射型 XSS,它是基於 DOM 文檔對象模型的一種漏洞。

可以通過 DOM 來動態修改頁面內容,從客戶端獲取 DOM 中的數據並在本地執行。基於這個特性,就可以利用 JS 腳本來實現 XSS 漏洞的利用

XSS 是一門又熱門又不太受重視的 Web 攻擊方式,為什麼會這樣呢,原因如下:

  • 耗時間;
  • 有一定幾率不成功;
  • 沒有相應的軟件來完成自動化攻擊;
  • 前期需要基本的 HTML、JS 功底,後期需要紮實的 HTML、JS、ActionScript2/3.0等語言的功底;
  • 是一種被動的攻擊手法;
  • 對 Website 有 http-only、crossdomian.xml 沒有用。

但是這些並沒有影響黑客對此漏洞的偏愛,原因只有一個:XSS幾乎每個網站都存在。

三、XSS 情景再現

Web 安全之 XSS 攻擊

為了更好的說明 XSS,我們來舉一些小栗子:

1.在網頁 input 或者 textarea 中輸入 ,如果彈出 alert對話框,則說明網站存在 XSS 漏洞。

請注意:我們經常在一些博客網站或者論壇底下的留言框看到 alert,你以為是用戶熱情,其實他們是想搞你!

2.只要網頁存在 XSS 漏洞,攻擊者可能會嵌入 JS 腳本,如:

 // 獲取 cookie ,發送用戶信息等

3.圖片也可能會被利用,如:

 

4.直接使用 URL 參數攻擊,如:

https://www.baidu.com?jarttoTest=

當然,這裡需要注意的是,URL 也有可能是不知來歷的二維碼,所以請慎重掃碼

到這裡你可能就瞭解了,XSS 的目的就是在目標頁面執行不為人知的 JS 腳本,從而窺探用戶隱私甚至財產。

四、XSS 漏洞檢測以及防禦

通常有一些方式可以測試網站是否有正確處理特殊字符,具體如下:

Web 安全之 XSS 攻擊

防禦手段可以採取如下方式:

1.對所有用戶提交內容進行可靠的輸入驗證,包括對 URL、查詢關鍵字、HTTP頭、POST數據等,僅接受指定長度範圍內、採用適當格式、採用所預期的字符的內容提交,對其他的一律過濾。

2.使用 HTTP 頭指定類型,很多時候可以使用 HTTP 頭指定內容的類型,使得輸出的內容避免被作為 HTML 解析。

3.實現 Session 標記(session tokens)、CAPTCHA 系統或者 HTTP 引用頭檢查,以防功能被第三方網站所執行。

4.確認接收的的內容被妥善的規範化,僅包含最小的、安全的 Tag (沒有 JS ),去掉任何對遠程內容的引用(尤其是樣式表和 JS ),使用 HTTP only 的 Cookie。

避免 XSS 的方法之一主要是將用戶所提供的內容進行過濾,許多語言都有提供對 HTML的過濾,看似很簡單,實則很有效。

五、總結

Web 安全之 XSS 攻擊

隨著 Web2.0、社交網絡、微博、自媒體等等一系列互聯網產品的誕生,基於 Web 環境的互聯網應用越來越廣泛。

企業信息化的過程中各種應用都架設在 Web 平臺上,Web 業務的迅速發展也引起黑客們的強烈關注,接踵而至的就是 Web 安全威脅的凸顯。

在時代賦予 Web 前端開發使命的時候,我們應該比其他人更謹慎,更懂得應付危害網絡安全的行為,任重而道遠啊~

六、參考

Web 安全的三個攻防姿勢

XSS 的原理分析與解剖

Web 安全之 XSS 攻擊


分享到:


相關文章: