跨站式腳本(Cross-SiteScripting)XSS攻擊原理分析第4/4頁(yè)
更新時(shí)間:2008年09月06日 12:27:38 作者:
XSS又叫CSS (Cross Site Script) ,跨站腳本攻擊。它指的是惡意攻擊者往Web頁(yè)面里插入惡意html代碼,當(dāng)用戶瀏覽該頁(yè)之時(shí),嵌入其中Web里面的html代碼會(huì)被執(zhí)行,從而達(dá)到惡意用戶的特殊目的。
危害
1、盜取各類用戶帳號(hào),如機(jī)器登錄帳號(hào)、用戶網(wǎng)銀帳號(hào)、各類管理員帳號(hào)
2、控制企業(yè)數(shù)據(jù),包括讀取、篡改、添加、刪除企業(yè)敏感數(shù)據(jù)的能力
3、盜竊企業(yè)重要的具有商業(yè)價(jià)值的資料
4、非法轉(zhuǎn)賬
5、強(qiáng)制發(fā)送電子郵件
6、網(wǎng)站掛馬
7、控制受害者機(jī)器向其它網(wǎng)站發(fā)起攻擊
防范
1、必須明確:一切輸入都是有害的,不要信任一切輸入的數(shù)據(jù)。
2、緩和XSS問(wèn)題的首要法則是確定哪個(gè)輸入是有效的,并且拒絕所有別的無(wú)效輸入。
3、替換危險(xiǎn)字符,如:"&", "<", ">", ""","'", "/", "?",";", ":", "%", "<SPACE>", "=", "+"。各種語(yǔ)言替換的程度不盡相同,但是基本上能抵御住一般的XSS攻擊。
復(fù)制代碼 代碼如下:
a.ASP中的Server.HTMLEncode: <%= Server.HTMLEncode("The paragraph tag: <P>") %>
b.ASP.NET的Server.HtmlEncode及Server.UrlEncode: String TestString = "This is a <Test String>.";
String EncodedString = Server.HtmlEncode(TestString);
Server.UrlEncode(Request.Url.ToString());
4、有些網(wǎng)站使用過(guò)濾javascript關(guān)鍵字的辦法來(lái)防止XSS,其實(shí)是很不明智的,因?yàn)閄SS有時(shí)候根本就不需要javascript關(guān)鍵字或者對(duì)javascript關(guān)鍵字進(jìn)行格式變化來(lái)躲過(guò)過(guò)濾。
5、為所有的標(biāo)記屬性加上雙引號(hào)。應(yīng)該說(shuō)這也不是萬(wàn)全之策,只是在轉(zhuǎn)義了雙引號(hào)的前提下的一道安全保障。比如: 不加雙引號(hào)時(shí),onclick被執(zhí)行了:
<a href=http://www.xxx.com/detail.asp?id=2008 onclick='javascrpt:alert('haha')'>
加上了雙引號(hào),onclick不會(huì)被執(zhí)行:
<a href="http://www.xxx.com/detail.asp?id=2008 onclick='javascrpt:alert('haha')'">
6、將數(shù)據(jù)插入到innerText屬性中,腳本將不會(huì)被執(zhí)行。如果是innerHTML屬性,則必須確保輸入是安全的。如ASP.NET中:
復(fù)制代碼 代碼如下:
<%@ Page Language="C#" AutoEventWireup="true"%>
<html>
<body>
<span id="Welcome1" runat="server"> </span>
<span id="Welcome2" runat="server"> </span>
</body>
</html>
<script runat="server">
private void Page_Load(Object Src, EventArgs e)
{
// Using InnerText renders the content safe–no need to HtmlEncode
Welcome1.InnerText = "haha";
// Using InnerHtml requires the use of HtmlEncode to make it safe
Welcome2.InnerHtml = "Hello, " + Server.HtmlEncode("haha");
}
</Script>
7、使用IE6.0SP1的cookie選項(xiàng)HttpOnly,注意,HttpOnly只能阻止惡意腳本讀取cookie,并不能阻止XSS攻擊。比如在ASP.NET中:
復(fù)制代碼 代碼如下:
HttpCookie cookie = new HttpCookie("Name", "ZhangChangrong");
cookie.Path = "/; HttpOnly";
Response.Cookies.Add(cookie);
8、使用IE的<IFrame>的Security屬性,設(shè)置為restricted后,frame中的腳本將不能執(zhí)行(僅限于IE)。如:
<iframe security="restricted" src="http://www.somesite.com/somepage.htm"></frame>
9、ASP.NET中的ValidateRequest配置選項(xiàng)。默認(rèn)情況下,這個(gè)功能是開(kāi)啟的,這個(gè)功能將會(huì)檢查用戶是否試圖在cookie、查詢字符串以及HTML表格中設(shè)置HTML或腳本。如果請(qǐng)求包含這種潛在的危險(xiǎn)輸入,就會(huì)拋出一個(gè)HttpRequestValidationException異常。我在嘗試試探當(dāng)當(dāng)網(wǎng)的XSS漏洞時(shí)發(fā)現(xiàn)這個(gè)異常信息,可以說(shuō)當(dāng)當(dāng)網(wǎng)使用了ValidateRequest這個(gè)選項(xiàng),或者從另一方面說(shuō),也許是無(wú)意中啟用了這一選項(xiàng),同時(shí),將錯(cuò)誤信息拋出給用戶是非常不安全的。
a、給一個(gè)頁(yè)面設(shè)置ValidateRequest選項(xiàng):
<%@ Page Language="C#" ValidateRequest="false" %>
b、在Machine.config中設(shè)置全局ValidateRequest選項(xiàng),注意,如果在Web.config中重新設(shè)置,不會(huì)覆蓋Machine.config中的這一設(shè)置:
<system.web>
<pages buffer="true" validateRequest="true" />
</system.web>
c、讓我們來(lái)目睹當(dāng)當(dāng)網(wǎng)給我們帶來(lái)的這一盛況:

10、在一些必須使用到HTML標(biāo)簽的地方,比如公告欄,可以使用其他格式的標(biāo)示代替,比如論壇中廣泛使用的BBCode,用[i]...["i]來(lái)表示斜體。
11、然而,對(duì)于一些允許用戶輸入特定HTML的地方,強(qiáng)烈建議使用正則表達(dá)式進(jìn)行匹配。比如: if (/^(?:["s"w"?"!","."'""]*|(?:"<"/"?(?:i|b|p|br|em|pre)">))*$/i)
{
#Cool, it's valid input
}
發(fā)現(xiàn)問(wèn)題
1、查找所有包含用戶輸入的入口。
2、跟蹤流入應(yīng)用程序的每一個(gè)數(shù)據(jù)。
3、確定數(shù)據(jù)是否與輸出有關(guān)系。
4、如果與輸出有關(guān),它是不是原始數(shù)據(jù),是不是經(jīng)過(guò)處理的?
參考資料
Michael Howard, David LeBlanc. "Writing Secure Code"
Mike Andrews, James A. Whittaker "How to Break Web Software"
http://en.wikipedia.org/wiki/Cross-site_scripting
Klein, Amit (July 4, 2005). "DOM Based Cross Site Scripting or XSS of the Third Kind". Web Application Security Consortium. Retrieved on 2008-05-28.
http://ha.ckers.org/xss.html
您可能感興趣的文章:
- 淺談html轉(zhuǎn)義及防止javascript注入攻擊的方法
- 什么是JavaScript注入攻擊?
- linux抵御DDOS攻擊 通過(guò)iptables限制TCP連接和頻率
- 淺談利用JavaScript進(jìn)行的DDoS攻擊原理與防御
- Linux系統(tǒng)防CC攻擊自動(dòng)拉黑IP增強(qiáng)版(Shell腳本)
- linux封鎖IP簡(jiǎn)單防御UDP攻擊
- IP攻擊升級(jí),程序改進(jìn)以對(duì)付新的攻擊
- php下網(wǎng)站防IP攻擊代碼,超級(jí)實(shí)用
- 分析攻擊IP來(lái)源地與防御IP攻擊的應(yīng)對(duì)策略
相關(guān)文章
Portia開(kāi)源可視化爬蟲(chóng)工具的使用學(xué)習(xí)
這篇文章主要為大家介紹了Portia開(kāi)源可視化爬蟲(chóng)工具的使用學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04
Iptables防火墻iprange模塊擴(kuò)展匹配規(guī)則詳解
這篇文章主要為大家介紹了Iptables防火墻iprange模塊擴(kuò)展匹配規(guī)則詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
跨站腳本攻擊XSS(Cross Site Script)的原理與常見(jiàn)場(chǎng)景分析
XSS指的是惡意攻擊者往Web頁(yè)面里插入惡意html代碼,當(dāng)用戶瀏覽該頁(yè)之時(shí),嵌入其中Web里面的html代碼會(huì)被執(zhí)行,從而達(dá)到惡意攻擊用戶的特殊目的。這篇文章主要給大家介紹了關(guān)于跨站腳本攻擊XSS(Cross Site Script)的原理與常見(jiàn)場(chǎng)景的相關(guān)資料,需要的朋友可以參考下。2017-12-12
Iptables防火墻connlimit與time模塊擴(kuò)展匹配規(guī)則
這篇文章主要為大家介紹了Iptables防火墻connlimit與time模塊擴(kuò)展匹配規(guī)則詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
網(wǎng)頁(yè)打開(kāi)后自動(dòng)執(zhí)行木馬
網(wǎng)頁(yè)打開(kāi)后自動(dòng)執(zhí)行木馬...2006-09-09
注冊(cè)驗(yàn)證java代碼[針對(duì)上篇文章]
注冊(cè)驗(yàn)證代碼[針對(duì)上篇文章] ,大家可以多參考腳本之家以前發(fā)布的文章。2009-08-08
Win32 下病毒設(shè)計(jì)入門詳細(xì)說(shuō)明
Win32 下病毒設(shè)計(jì)入門詳細(xì)說(shuō)明...2007-04-04

