<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是跨站腳本攻擊?一篇帶你了解什么叫做XSS

馬哥Linux運維 ? 來源:稀土掘金 ? 2023-12-20 09:49 ? 次閱讀

XSS簡介

(1)XSS簡介

XSS作為OWASP TOP 10之一。

XSS中文叫做跨站腳本攻擊(Cross-site scripting),本名應該縮寫為CSS,但是由于CSS(Cascading Style Sheets,層疊樣式腳本)重名,所以更名為XSS。XSS(跨站腳本攻擊)主要基于javascript(js)來完成惡意的攻擊行為。

XSS是一種經常出現在web應用中的計算機大全漏洞,也是web中最主流的攻擊方式。那么什么是XSS呢?

XSS是指惡意攻擊者利用網站對用戶提交的數據進行轉義處理或者過濾不足的缺點,進而添加一些代碼,嵌入到web頁面中去。使別的用戶訪問都會執行相應的嵌入代碼。

從而盜取用戶資料、利用用戶身份進行某種動作或者訪問者進行病毒侵害的一種攻擊方式。

(2)XSS原理

利用我們所知道的各種黑魔法,向web頁面插入js代碼,讓js代碼可以被瀏覽器執行,訪問該頁面 的用戶則被攻擊。

(3)XSS的危害

針對用戶 竊取cookie劫持的會話 網絡釣魚 放馬挖礦 廣告刷流量 針對web服務 劫持后臺(常見) 篡改頁面 傳播蠕蟲 內網掃描(常見)

(4)XSS類型

反射型:

反射型也稱為非持久型,這種類型的腳本是最常見的,也是使用最為廣泛的一種,主要用于將惡意的腳本附加到URL地址的參數中。

存儲型:

攻擊者將已經構造完成的惡意頁面發送給用戶,用戶訪問看似正常的頁面后收到攻擊,這類XSS通常無法直接在URL中看到惡意代碼,具有較強的持久性和隱蔽性。

DOM

DOM型XSS無需和后端交互,而是基于JavaScript上,JS解析URL中惡意參數導致執行JS代碼

2.XSS分類詳解

(1)存儲型XSS

存儲型XSS:持久性,代碼是存儲在web服務器中的,比如在個人信息或發表文章等地方插入代碼,如果沒有過濾或者過濾不嚴,那么這些代碼將存儲在服務器中,用戶訪問該頁面的時候觸發代碼執行。這種XSS比較危險,容易造成蠕蟲、盜竊cookie。每一個訪問特定頁面的用戶,都會受到攻擊。

特點:

XSS攻擊代碼存儲于web server上;攻擊者一般是通過網站的留言、評論、博客、日志等功能(所有能夠向web server輸入內容的地方),將攻擊代碼存儲到web server上的 存儲型XSS攻擊流程:

58d5c52a-9e67-11ee-8b88-92fbcf53809c.jpg

(2)反射型XSS

反射型跨站腳本也稱作非持久型、參數型跨站腳本、這類型的腳本是最常見的 ,也是使用最為廣泛的一種,主要用于將惡意的腳本附加到URL地址的參數中。


  http://www.test.com/search.php?key=">


一般使用的將構造好的URL發給受害者,是受害者點擊觸發,而且只執行一次,非持久化。

反射型XSS攻擊流程:

58f4b3a4-9e67-11ee-8b88-92fbcf53809c.jpg

反射型XSS-DVWA:


  Payload:
  Low:
  Mid:
  High:


(3)JS簡介

JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基于原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言,最早是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。

在1995年時,由Netscape公司的Brendan Eich,在網景導航者瀏覽器上首次設計實現而成。因為Netscape與Sun合作,Netscape管理層希望它外觀看起來像Java,因此取名為JavaScript。但實際上它的語法風格與Self及Scheme較為接近。為了取得技術優勢,微軟推出了JScript,CEnvi推出ScriptEase,與JavaScript同樣可在瀏覽器上運行。為了統一規格,因為JavaScript兼容于ECMA標準,因此也稱為ECMAScript。

3.XSS發現與防護

(1)XSS的五種防御方式

HTML節點內容的XSS防御

轉義掉<<和>>即轉義掉<>即可,轉義的時候有兩種,一種是寫入數據庫的時候進行轉義,另一種是在解析的時候轉義 這里是在顯示的時候轉義


var escapeHtml = function(str){
    str = str.replace(/>/g,'<')
    str = str.replace(/>/g,'>')
    return str
}
escapeHtml(content)

HTML屬性的XSS防御 轉義" &quto;即轉義掉雙引號,'轉義掉單引號,(另一個要注意的是實際上html的屬性可以不包括引號,因此嚴格的說我們還需要對空格進行轉義,但是這樣會導致渲染的時候空格數不對,因此我們不轉義空格,然后再寫html屬性的時候全部帶上引號)這樣屬性就不會被提前關閉了


var escapeHtmlProperty = function(str){
    str = str.replace(/"/g,'&quto;');
    str = str.replace(/'/g,''');
    str = str.replace(/ /g,' ');
    return str;
}


escapeHtmlProperty(content);

其實以上兩個函數可以合并成一個函數,這樣不管是內容還是屬性都可以使用一個函數來過濾了。

HTML轉義函數


var escapeHtmlProperty = function(str){
    if(!str) return '';
    str = str.replace(/&/g,'&');
    str = str.replace(/>/g,'<');
    str = str.replace(/>/g,'>');
    str = str.replace(/"/g,'&quto;');
    str = str.replace(/'/g,''');
    return str;
}
escapeHtml(content);

js轉義

轉義掉""或者替換成json


var escapeForJs = function(str){
    if(!str) return '';
    str = str.replace(/\/g,'\\');
    str = str.replace(/"/g,'"');
}


富文本

由于需要完整的HTML因此不太容易過濾,一般是按照白名單進行保留部分標簽和屬性來進行過濾,除了允許的標簽和屬性,其他的全部不允許(也有黑名單的方式,但是由于html復雜效果比較差,原理就是之前的正則替換) 其實可以用別人寫好的XSS組件就叫做xss,直接

npm install xss

白名單-使用第三方庫XSS,支持指定白名單


var xssFilter = function(html){
    if(!html) return '';
    var xss = require('xss');
    var ret = xss(html,{
        whileList:{
            img:['src'],
            a:['href'],
            font:['size','color']
        },
        onIgnoreTag: function(){
            return '';
        }
    });
    
    console.log(html,ret);
    
    return ret;
}

(2)XSS蠕蟲攻擊

XSS蠕蟲的破壞力和影響力都是巨大的。XSS蠕蟲主要發生在用戶之間存在交互行為的頁面中,當Web應用程序對用戶輸入的數據信息沒有做嚴格的過濾時,通過結合Ajax的異步提交,就可以實現在植入惡意代碼的同時,將惡意代碼進行對外發送,即實現了代碼的感染和傳播,也就形成了XSS蠕蟲。

(3)挖掘XSS漏洞

掃描工具自動化檢測 AWVS AppScan JSKy 手工測試 源碼分析

(4)XSS漏洞的防范

XSS跨站腳本攻擊漏洞防范

客戶端用戶

IE8及高級版本,開啟XSS篩選器功能 Firefox使用CSP、Noscript等擴展功能 瑞星個人防火墻2012版本開啟XSS攔截功能

Web應用程序員

使用HttpOnly 完善的輸入、輸出檢查

HttpOnly

HttpOnly最初是由微軟提出的,目前已經被多款流行瀏覽器廠商所采用。HttpOnly的作用不是過濾XSS跨站腳本攻擊,而是瀏覽器將禁止頁面的Javascript訪問帶有HttpOnly屬性的Cookie,解決XSS跨站腳本攻擊后的Cookie會話劫持行為。

輸入、輸出檢查

由于三種XSS跨站腳本攻擊類型的漏洞成因可不相同,針對輸入輸出的檢查一部分適用于反射型XSS與存儲型XSS,而另外一些檢查適用于基于DOM的XSS 在大多數的時候都是對可信字符的檢查或輸入數據格式的檢查,如用戶輸入的注冊賬號信息中只允許包括字母、數字、下劃線和漢字等,對于輸入的一切非白名單內的字符均認為是非法輸入。

數據格式如IP地址、電話號碼、郵件地址、日期等數據都具有一定的格式規范,只有符合數據規范的輸入信息才允許通過檢查。輸出檢查主要是針對數據展示過程,應該對數據的信息進行HTML編碼處理,將可能存在導致XSS跨站腳本攻擊的惡意字符進行編碼,在不影響正常數據顯示的前提條件下,過濾惡意字符。常見的可能造成的XSS跨站腳本攻擊的字符及其HTML編碼如:


  "  ---  "
  '  ---  &apos
  &  ---  &
  <  ---  &It
  >  ---  >


除了常用的編碼外,任何字符都可以使用其ASCII碼進行HTML編碼,如:


  %  ---  &
  *  ---  &

DOM Based XSS輸入、輸出檢查


- 特殊性
  - 基于DOM的XSS跨站腳本攻擊發生時,惡意數據的格式與傳統的XSS跨站腳本攻擊數據格式有一定的差異,甚至可以在不經過服務器端的處理和響應的情況下,直接對客戶端實施攻擊行為。
- 輸入檢查
  - 在客戶端部署相應的安全檢測代碼的過濾效果要比在服務器端檢測的效果更加明顯。
  - 客戶端檢測代碼來保證用戶輸入的數據只包含字母、數字和空格。
  - 服務端實現上述數據檢查的功能
    - URL參數名稱、個數檢測
    - 參數值類型及內容檢測
- 輸出檢查
  - 在將用戶可控的DOM數據內容插入到文檔之前,Web應用程序應對提交的數據中可能存在的各種危險字符和表達式進行過濾以安全的方式插入到文檔中進行展現。






審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • HTML
    +關注

    關注

    0

    文章

    273

    瀏覽量

    29327
  • javascript
    +關注

    關注

    0

    文章

    511

    瀏覽量

    53445
  • DOM
    DOM
    +關注

    關注

    0

    文章

    16

    瀏覽量

    9532
  • XSS
    XSS
    +關注

    關注

    0

    文章

    23

    瀏覽量

    2320

原文標題:你知道跨站腳本攻擊嗎?一篇帶你了解什么叫做XSS

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    預防跨站腳本攻擊XSS)的方法

    跨站腳本攻擊XSS),是最普遍的Web應用安全漏洞。這類漏洞能夠使得攻擊者嵌入惡意腳本代碼到正常用戶會訪問到的頁面中,當正常用戶訪問該頁面
    的頭像 發表于 09-30 10:05 ?760次閱讀

    《CDN 之我見》系列二:原理(緩存、安全)

    準確溯源攻擊手段暴力,流量大,以達到短時間不能服務為主要目的技術門檻低,但由于需要眾多資源,攻擊成本較高而例如 XSS 、SQL 注入、
    發表于 06-12 16:59

    文章帶你了解原型制作化技術

    文章帶你了解什么是原型制作化技術?
    發表于 04-26 06:15

    帶你了解步進電機的相關知識

    帶你了解步進電機的相關知識:相、線、極性和步進方式2017-09-07 16:45這里不說步進電機的 “細分” 實驗,只說下有關步進電機的基礎概念以及步進電機的三種工作方式——單
    發表于 07-08 06:48

    基于動態污點分析的DOM XSS漏洞檢測算法

    針對Web客戶端中基于文檔對象模型的跨站腳本攻擊(DOM XSS)漏洞檢測問題,提出一種基于動態污點分析的DOM XSS漏洞檢測算法。通過構造DOM模型和修改Firefox Spide
    發表于 12-18 16:01 ?0次下載
    基于動態污點分析的DOM <b class='flag-5'>XSS</b>漏洞檢測算法

    基于Django的XSS防御研究與實現

    跨站腳本攻擊XSS)是當前最流行的Web應用攻擊方式之一,而Django作為目前比較火熱的Web應用開發框架,并沒有為其開發的Web應用提供有效的
    發表于 04-09 11:33 ?0次下載
    基于Django的<b class='flag-5'>XSS</b>防御研究與實現

    什么是XSS跨站漏洞以及它的修復方案

    XSS攻擊又分好幾個種類,分存儲型XSS,反射型XSS,DOM型XSS,為了快速的讓大家理解這些專業術語,我這面通俗易懂的跟大家介紹一下,存
    發表于 09-09 11:34 ?1383次閱讀

    一文了解安全測試基礎之XSS

    在web項目安全漏洞中,XSS是最為流程的漏洞類型之一,今天就來介紹一下XSS。
    的頭像 發表于 06-28 11:15 ?2225次閱讀

    使用雙向長短時記憶網絡檢測跨站腳本攻擊

    目前傳統的跨站腳本XSS)檢測技術大多使用機器學習方法,存在代碼被惡意混淆導致可讀性不高特征提取不充分并且效率低等缺陷,從而導致檢測性能不佳。針對上述問題,提出了使用雙向長短時記憶網絡檢測跨站腳本
    發表于 04-09 16:09 ?10次下載
    使用雙向長短時記憶網絡檢測跨站<b class='flag-5'>腳本</b><b class='flag-5'>攻擊</b>

    XSS發生原理及XSS攻擊的類型

    xss發生原理 xss就是跨站腳本攻擊,造成這種漏洞存在的根本原因是開發者的安全意識不夠而留下的漏洞,使得用戶可以直接在頁面提交代碼,并且執行,從而獲取到用戶權限,cookie等危害,
    的頭像 發表于 08-04 18:00 ?3603次閱讀

    CSRF是什么 CSRF與XSS攻擊的區別

    ,虛擬貨幣轉賬。。。。。。造成的問題包括:個人隱私泄露以及財產安全。 CSRF與XSS攻擊的區別 (1)CSRF攻擊的主要目的是讓用戶在不知情的情
    的頭像 發表于 08-05 10:09 ?6428次閱讀

    物聯網是什么,一文帶你了解物聯網

    一篇文章帶你了解物聯網
    的頭像 發表于 03-23 14:16 ?3407次閱讀

    XSS漏洞掃描器工具

    XSpear是一款基于RubyGems的的XSS漏洞掃描器。擁有常見的XSS漏洞掃描攻擊測試功能。還可進行參數分析。
    的頭像 發表于 01-17 09:28 ?1277次閱讀

    ie瀏覽器限制運行腳本

    的安全。在本文中,我將詳細介紹IE瀏覽器限制運行腳本的各個方面和原因。 首先,IE瀏覽器限制運行腳本的一個主要原因是為了防止跨站腳本攻擊(Cross-Site Scripting,
    的頭像 發表于 11-26 11:19 ?826次閱讀

    常見網絡攻擊與防御方法

    反射型是將腳本代碼放在URL中,當用戶點擊URL,該請求就會通過服務器解析返回給瀏覽器,在返回的響應內容中出現攻擊者的XSS代碼,瀏覽器執行時就會中招了。
    的頭像 發表于 03-28 10:57 ?216次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>