XSS 與 CSRF 攻擊——有什麼區別?

zktq2021發表於2022-07-13

跨站指令碼(XSS)和跨站請求偽造(CSRF),它們將惡意指令碼注入目標系統,以進一步利用技術棧或竊取使用者資料。

什麼是 XSS 和 CSRF?

CSRF和XSS都是客戶端攻擊,它們濫用同源策略,利用web應用程式和受害使用者之間的信任關係。XSS和跨站指令碼攻擊允許攻擊者破壞合法使用者與任何易受攻擊的應用程式的互動。

什麼是 XSS?

XSS漏洞發生在web應用程式中,這些應用程式在不進行編碼或驗證的情況下接受使用者輸入並在響應中使用它。惡意使用者編寫惡意程式碼並透過輸入表單提交。目標伺服器包含這個指令碼及其響應,客戶機瀏覽器執行它。由於瀏覽器信任web伺服器,它授予惡意指令碼訪問本地儲存的cookie、會話令牌和其他敏感客戶端資訊的許可權。

XSS是一個常見的攻擊向量,成功攻擊的影響通常因不同的場景而不同,包括:

洩露使用者檔案

安裝惡意軟體/木馬

竊取網上銀行資訊

HTML/DOM 內容修改

將使用者重定向到未知網站

XSS 攻擊型別

XSS 攻擊主要分為三類:儲存型 XSS 攻擊/持久型 XSS/Type-I XSS

在儲存式跨站攻擊中,注入的惡意程式碼被永久地儲存在易受攻擊的web應用程式的不同元件中,如資料庫、評論欄位、訪客日誌、訊息論壇等。每當客戶端訪問受感染網站或向web伺服器發起請求時,該請求就會在使用者的瀏覽器中執行惡意指令碼。

無目的 XSS

一種混合形式的XSS攻擊,其中攻擊者的指令碼被儲存並反映來自後端應用程式的使用者。

反射/非永續性 XSS

在反射式跨站點指令碼中,惡意指令碼會從 Web 伺服器反射出來,例如搜尋結果、錯誤訊息或任何其他包含某些使用者輸入的 Web 伺服器響應。該指令碼透過外部路徑傳遞給受害者,例如不同的網站或電子郵件。當受害者提交表單、瀏覽駭客網站或點選可疑連結時,惡意指令碼會被髮送到該網站,然後反映在客戶端的瀏覽器中。

基於 DOM 的 XSS

在基於 DOM 的跨站指令碼中,惡意指令碼是透過修改受害者瀏覽器的文件物件模型環境而執行的。這種攻擊不會改變 Web 伺服器的 HTTP 響應,但會由於 DOM 修改而改變客戶端程式碼的執行。

什麼是 CSRF?

跨站點請求偽造 (CSRF) 也稱一鍵式攻擊,是一種 Web 應用程式網路攻擊,可誘使受害者在不知不覺中代表攻擊者執行操作。CSRF 攻擊利用 Web 應用程式中的一個安全漏洞,該漏洞無法區分經過身份驗證的使用者會話中的錯誤請求和合法請求。

攻擊者通常使用社會工程技術發起 CSRF 攻擊,以誘騙受害者使用者載入頁面或單擊包含惡意請求的連結。該連結從經過身份驗證的使用者的瀏覽器向目標網站傳送惡意請求。對於大多數網站,瀏覽器請求本質上包括會話資訊,例如會話 cookie、有效令牌或網站與使用者關聯的登入憑據。如果經過身份驗證的使用者已經與目標網站處於活動會話中,則站點會將新的惡意請求視為來自使用者的有效請求並執行它。

CSRF 攻擊型別

如果 Web 應用程式無法區分非法請求和有效請求,那麼它很容易受到跨站點請求偽造的攻擊。有當認證使用者與web應用程式處於活動會話時,攻擊才會成功。

登入 CSRF 攻擊

使用一種稱為Login CSRF攻擊的特殊形式的CSRF攻擊,攻擊者可以訪問受害者使用者的機密和敏感資料。這種攻擊迫使不知情的使用者登入到駭客控制的帳戶。然後,受害者被騙向賬戶中新增個人身份識別和敏感資訊,如電子郵件地址和信用卡資訊。

儲存 CSRF 攻擊

CSRF攻擊包也可以儲存在易受攻擊的網站上。對手可以透過執行高階XSS攻擊或在接受HTML的欄位中儲存IFRAME或IMG標記來實現儲存CSRF攻擊。在站點上儲存攻擊會放大攻擊的嚴重性和可能性,因為受害者使用者現在肯定會檢視CSRF載入的頁面,並且也會自然地對該頁面進行身份驗證。

CSRF 與 XSS 的區別

CSRF和XSS都是客戶端攻擊,它們濫用同源策略,利用web應用程式和不知情的使用者之間的信任關係。

但是,XSS 和 CSRF 攻擊之間存在一些根本差異,包括:

XSS攻擊遵循雙向攻擊模式,允許攻擊者執行惡意指令碼、訪問響應,並將後續敏感資料傳送到攻擊者選擇的目的地。另一方面,CSRF是一種單向攻擊機制,這意味著攻擊者只能發起HTTP請求,但不能檢索已發起請求的響應。

CSRF攻擊要求經過身份驗證的使用者處於活動會話中,而XSS攻擊則不需要。在XSS攻擊中,只要使用者登入,就可以儲存和交付有效載荷。

CSRF攻擊的範圍有限,僅限於使用者可以執行的操作,例如點選惡意連結或訪問駭客的網站。相反,XSS攻擊提供執行惡意指令碼來執行攻擊者所選擇的任何活動,從而擴大了攻擊的範圍。

在XSS攻擊中,惡意程式碼儲存在站點中,而在CSRF攻擊中,惡意程式碼儲存在受害使用者訪問的第三方站點中。

XSS 和 Javascript 注入有什麼區別?

XSS 是一種客戶端攻擊,駭客將惡意指令碼部署到 Web 伺服器中,由毫無戒心的使用者瀏覽器執行。

另一方面,Javascript 注入是一種伺服器端攻擊,駭客將惡意指令碼傳送到伺服器,由直譯器執行,就好像它是原始碼的一部分一樣。

有哪些有效的 CSRF 預防機制?

防止 CSRF 攻擊的一些方法包括:

使用同步器令牌模式

使用雙重提交 cookie

使用 HTTP 標準標頭來驗證請求的來源

基於 UI 的驗證,例如基於 CAPTCHA 的授權和 MFA

使用 SameSite Cookie 進行請求來源管理

CSRF 令牌的使用

一些常用的有效 XSS 預防技術包括:

執行內容安全策略

驗證和過濾使用者輸入

編碼輸出資料

使用自定義響應標頭(Content-Type 和 X-Content-Type-Options)來管理瀏覽器響應解釋

清理 HTML 輸入

隨著安全左移,在開發期間透過 靜態程式碼掃描工具可以第一時間發現可以造成嚴重安全事故的缺陷及安全隱患,透過提高軟體安全性防範未知安全風險。


文章來源:

https://crashtest-security.com/xss-vs-csrf-difference/


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2905523/,如需轉載,請註明出處,否則將追究法律責任。

相關文章