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

分享

什么是跨站點腳本攻擊

 吳雨虹2kzpi83a 2020-08-18

  

各位在做軟件漏掃,尤其是Web應(yīng)用系統(tǒng)漏掃時,,可能會遇到系統(tǒng)存在跨站點腳本攻擊(XSS)漏洞的警告,,那今天就聊一下它。

概述

跨站點腳本攻擊(Cross Site Scripting簡稱XSS)是一種常見的攻擊行為,,它是指惡意攻擊者在應(yīng)用系統(tǒng)的Web頁面里插入惡意代碼,,當用戶瀏覽該頁面時,嵌入其中Web里面的惡意代碼會被執(zhí)行,,從而達到攻擊的目的,。從原理上講,跨站點腳本攻擊與前面講的SQL注入攻擊一樣,,都是利用系統(tǒng)對用戶輸入檢查不嚴格的漏洞,,將用戶數(shù)據(jù)變成了可執(zhí)行的代碼。一個完整的XSS過程是這樣的:

1.        攻擊者想辦法在應(yīng)用系統(tǒng)頁面中嵌入了惡意腳本代碼,;

2.        攻擊者想辦法讓目標用戶打開頁面鏈接或瀏覽頁面,;

3.        應(yīng)用系統(tǒng)將含有惡意腳本的頁面返回給用戶瀏覽器,;

4.        瀏覽器解析運行惡意腳本。

舉個例子:

我們打開一個網(wǎng)址,,用Burp Suite這個工具對數(shù)據(jù)包進行攔截修改,,在user參數(shù)插入69388%22%3balert(1)%2f%2f755,上述操作相當于實現(xiàn)了XSS攻擊的前兩步,,如下圖,。

點擊Forward按鈕圖片1
,瀏覽器彈出如下對話框,。

由此可見,,注入的腳本“alert(1)”被瀏覽器執(zhí)行,攻擊行為得手,。在XSS攻擊過程中,,注入的腳本代碼被叫做載荷(payload)。

類型

上述使用BurpSuite工具的過程是為了驗證目標Web頁面是否存在XSS漏洞,,真正發(fā)起XSS攻擊時當然不可能用到它,。大體來說,XSS的攻擊行為分以下三種:

l 存儲型XSS:這種攻擊是一種持久性的攻擊,。XSS腳本作為頁面數(shù)據(jù)的一部分存儲在服務(wù)器或數(shù)據(jù)庫中,,用戶訪問該頁面的時候就會觸發(fā)代碼執(zhí)行。比如在論壇,、博客和留言板系統(tǒng)中,,攻擊者在發(fā)文的過程中將惡意腳本注入到所發(fā)文章內(nèi)容中,隨著文章被服務(wù)器存儲下來,,惡意腳本也被存放在服務(wù)器或數(shù)據(jù)庫中,,當其他用戶瀏覽了被注入惡意腳本的文章時,惡意腳本會在他們的瀏覽器中得到執(zhí)行,。這種XSS比較危險,,容易造成蠕蟲,Cookie盜取等,。

l 反射型XSS:這種攻擊是非持久化攻擊,。攻擊者構(gòu)造一個鏈接,鏈接指向的內(nèi)容包含了XSS腳本,。攻擊者通過欺騙等手段(如發(fā)送偽造的郵件)誘使用戶點擊鏈接觸發(fā)XSS代碼,。反射型XSS大多數(shù)是用來盜取用戶的Cookie信息。上面的例子就屬于反射型XSS.

l DOMXSS:這種攻擊也屬于反射型XSS,。它利用了Web頁面的文檔對象模型(Document ObjectModel,DOM)的特性來執(zhí)行腳本,。因此DOMXSS不經(jīng)過服務(wù)器端,只發(fā)生在客戶端,。

防范

知道了跨站點腳本攻擊的原理,,也就知道了如何去防范了,。整體思路是對用戶的輸入(URL參數(shù))進行過濾,對輸出進行HTML編碼,。也就是對用戶提交的所有內(nèi)容進行過濾,,對url中的參數(shù)進行過濾,過濾掉會導(dǎo)致腳本執(zhí)行的相關(guān)內(nèi)容,;然后對動態(tài)輸出到頁面的內(nèi)容進行HTML編碼,,使腳本無法在瀏覽器中執(zhí)行,。比如,,針對前文的例子,,可以這樣的輸入過濾處理:

在前端頁面引入RegularValidator控件和一個隱藏文本框,,并使用正則表達式"^([^\<\>\"\'\%\;\)\(\&]*)$"判斷用戶輸入是否含有非法字符,。

<asp:RegularValidatorID="revun" runat="server"

ControlToValidate="txtInput" ErrorMessage="非法輸入"Font-Overline="True"             Validation="^([^\<\>\"\'\%\;\)\(\&]*)$"></asp:RegularValidator>

<asp:TextBox ID="txtInput"runat="server"CausesValidation="True"></asp:TextBox>

相應(yīng)在后端代碼將用戶輸入內(nèi)容賦值給隱藏文本框,并驗證文本框內(nèi)容是否含有非法字符:

txtInput.Text =Me.Request.Form("username") + Me.Request.Form("password") +Me.Request.Form("sig") + Me.Request.Form("txt") +Me.Request.Form("logintype")

   revun.Validate()

 If Not revun.IsValid Then

   Me.Response.Write("<script>alert('用戶輸入可能存在惡意代碼,!');</script>")

     Exit Sub

 End If

要注意的是,,上面的過濾方法采用了黑名單過濾,即符合條件的就被過濾,。黑名單過濾雖然可以攔截大部分的XSS攻擊,,但是還是存在被繞過的風(fēng)險。而白名單過濾則相反,,符合條件的才不被過濾,,白名單雖然可以基本杜絕XSS攻擊,,但是真實環(huán)境中一般是不能進行如此嚴格過濾的,。

至于HTML編碼,,就是指對這些特殊字符進行編碼,以便瀏覽器直接原樣展示而不是處理它們,,比如下面的函數(shù):

htmlEncodeByRegExp:function (str){ 

                      var s = "";

                      if(str.length == 0) return "";

                      s = str.replace(/&/g,"&");

                      s = s.replace(/</g,"<");

                      s = s.replace(/>/g,">");

                      s = s.replace(/ /g," ");

                      s = s.replace(/\'/g,"'");

                      s = s.replace(/\"/g,""");

                      return s; 

                   }

由于Web頁面和腳本語言的復(fù)雜性,,實際中XSS攻擊的方法多種多樣,。本文只是從最基本的角度介紹了跨站點腳本攻擊的原理和防范思路,,在具體應(yīng)用中,,還需要大家根據(jù)實際情況應(yīng)對和解決,。

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多