Cross-Site Scripting(XSS)的类型
本文源自:
https://www.owasp.org/index.php/Types_of_Cross-Site_Scripting
在原文理解上翻譯為中文。
背景
本文描述多種不同類型的XSS攻擊,和它們之間的相互關系。
最早,有兩種類型的XSS攻擊被定義,Stored 和 Reflected , 在二零零五年,Amit Klein定義了第三種攻擊類型, DOM Based XSS攻擊。
Stored 類型
見上一篇文章中的定義。 此外, 由于HTML5的降臨, 和其它的瀏覽器技術, 攻擊者的有效荷載可以持久地存儲在受害者的瀏覽器中,例如HTML5數據庫, 其不用被發送到服務器端。
Reflected 類型
見上一篇文章中的定義。
DOM Based類型
惡意數據流從源頭到滲透,從未離開過瀏覽器, 例如源頭可以是URL,或者是HTML元素。滲透是一些敏感的JS調用, 例如document.write。
XSS的類型
若干年來, 很多人認為三種XSS攻擊類型是不同的,實際上三種攻擊類型是可以重疊的。 一個攻擊可能是 Stored DOM Based XSS。這樣造成概念很容易混淆,社區在二零一二年推薦使用新的術語,組織XSS攻擊的分類:
1 Server XSS
2 Client XSS
Server XSS
Server XSS產生當不可信的用戶提交數據被包含在服務器產生的響應中, 數據源可以來自請求, 也可以是來自存儲位置。
因此, 會有兩種疊加的XSS攻擊:
Stored Server XSS
Reflected Server XSS
這種情況, 整個缺陷都在服務器端代碼中,瀏覽器僅僅簡單渲染服務器響應,并執行有效的內嵌腳本。
Client XSS
Client XSS發生當不可信的用戶提交數據被用來更新DOM, 使用不安全的JS接口。
JS接口是不安全的, 如果其會引入有效的JS代碼到DOM中。
數據源頭可以來自DOM, 或者來自服務器端發送(via an AJAX call, or a page load), 最終的來源可以來自請求, 或者來自服務器或者客戶端的存儲位置。
因此有兩種重疊的攻擊類型:Reflected Client XSS and Stored Client XSS
有了新的定義, DOM Based 類型的定義不變。DOM Based XSS僅僅是Client XSS的一個子集, 它的數據源頭來自DOM的某處, 而不是來自服務器端。
考慮到 Server XSS and Client XSS 都可以是 Stored or Reflected 類型的, 新的術語產生了一個簡單明了的 二乘二 矩陣, 一個軸是 Client & Server, 另外一個軸是 Stored and Reflected,如下圖
?
?
推薦的Server XSS防御方法
Server XSS是由HTML中包含了不可信的數據導致。大多數情況下, 也是最早的最強大的防御方法是
- Context-sensitive server side output encoding (服務器端轉碼)
怎樣執行轉碼,在如此鏈接中有詳細描述 OWASP XSS (Cross Site Scripting) Prevention Cheat Sheet
輸入校驗 或者 數據清洗 也可以幫助預防此類攻擊, 但是此法困難更加多很多, 比輸出轉碼方法。
?
推薦的Client XSS預防方法
Client XSS攻擊發生,由于不信任的數據被用來更新DOM,使用非安全的JS接口。
最早最強壯的防御方法:
Using safe JavaScript APIs(使用安全的JS接口)
但是,開發者往往不知道哪些接口是安全的,哪些不是,更不用說那些JS庫的接口是安全的,哪些不是。
一些接口安全信息見 Unraveling some of the Mysteries around DOM Based XSS
?
如果你知道有個JS接口是不安全的,建議你使用安全的JS接口代替,如果不能代替, 在傳送不信任的數據到JS接口前,
需要將數據執行瀏覽器端的轉碼。
?
OWASP指南關于如何實施轉碼工作見 DOM based XSS Prevention Cheat Sheet
此指南的適用性對所有類型的XSS攻擊, 與數據實際從哪里來無關(Server DOM)。
?
References
[1] “DOM Based Cross Site Scripting or XSS of the Third Kind” (WASC writeup), Amit Klein, July 2005
http://www.webappsec.org/projects/articles/071105.shtml
Related OWASP Articles
- Cross-site Scripting (XSS)
- Stored XSS (AKA Persistent or Type I XSS)
- Reflected XSS (AKA Non-Persistent or Type II XSS)
- DOM Based XSS
- XSS (Cross Site Scripting) Prevention Cheat Sheet
- DOM based XSS Prevention Cheat Sheet
?
轉載于:https://www.cnblogs.com/lightsong/p/4300466.html
總結
以上是生活随笔為你收集整理的Cross-Site Scripting(XSS)的类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 静态html引入js添加随机数后缀防止缓
- 下一篇: 电脑突然显示只有C盘,其他磁盘不显示了-