最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

跨站式腳本(Cross-SiteScripting)XSS攻擊原理分析第4/4頁

 更新時(shí)間:2008年09月06日 12:27:38   作者:  
XSS又叫CSS (Cross Site Script) ,跨站腳本攻擊。它指的是惡意攻擊者往Web頁面里插入惡意html代碼,當(dāng)用戶瀏覽該頁之時(shí),嵌入其中Web里面的html代碼會(huì)被執(zhí)行,從而達(dá)到惡意用戶的特殊目的。

危害
1、盜取各類用戶帳號,如機(jī)器登錄帳號、用戶網(wǎng)銀帳號、各類管理員帳號
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問題的首要法則是確定哪個(gè)輸入是有效的,并且拒絕所有別的無效輸入。
3、替換危險(xiǎn)字符,如:"&", "<", ">", ""","'", "/", "?",";", ":", "%", "<SPACE>", "=", "+"。各種語言替換的程度不盡相同,但是基本上能抵御住一般的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)站使用過濾javascript關(guān)鍵字的辦法來防止XSS,其實(shí)是很不明智的,因?yàn)閄SS有時(shí)候根本就不需要javascript關(guān)鍵字或者對javascript關(guān)鍵字進(jìn)行格式變化來躲過過濾。

5、為所有的標(biāo)記屬性加上雙引號。應(yīng)該說這也不是萬全之策,只是在轉(zhuǎn)義了雙引號的前提下的一道安全保障。比如: 不加雙引號時(shí),onclick被執(zhí)行了:
<a href=http://www.xxx.com/detail.asp?id=2008 onclick='javascrpt:alert('haha')'>
加上了雙引號,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è)功能是開啟的,這個(gè)功能將會(huì)檢查用戶是否試圖在cookie、查詢字符串以及HTML表格中設(shè)置HTML或腳本。如果請求包含這種潛在的危險(xiǎn)輸入,就會(huì)拋出一個(gè)HttpRequestValidationException異常。我在嘗試試探當(dāng)當(dāng)網(wǎng)的XSS漏洞時(shí)發(fā)現(xiàn)這個(gè)異常信息,可以說當(dāng)當(dāng)網(wǎng)使用了ValidateRequest這個(gè)選項(xiàng),或者從另一方面說,也許是無意中啟用了這一選項(xiàng),同時(shí),將錯(cuò)誤信息拋出給用戶是非常不安全的。

a、給一個(gè)頁面設(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、讓我們來目睹當(dāng)當(dāng)網(wǎng)給我們帶來的這一盛況:

10、在一些必須使用到HTML標(biāo)簽的地方,比如公告欄,可以使用其他格式的標(biāo)示代替,比如論壇中廣泛使用的BBCode,用[i]...["i]來表示斜體。

11、然而,對于一些允許用戶輸入特定HTML的地方,強(qiáng)烈建議使用正則表達(dá)式進(jìn)行匹配。比如: if (/^(?:["s"w"?"!","."'""]*|(?:"<"/"?(?:i|b|p|br|em|pre)">))*$/i)
{
#Cool, it's valid input
}
發(fā)現(xiàn)問題
1、查找所有包含用戶輸入的入口。
2、跟蹤流入應(yīng)用程序的每一個(gè)數(shù)據(jù)。
3、確定數(shù)據(jù)是否與輸出有關(guān)系。
4、如果與輸出有關(guān),它是不是原始數(shù)據(jù),是不是經(jīng)過處理的?

參考資料
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

相關(guān)文章

最新評論

定结县| 凤冈县| 钦州市| 卢龙县| 永修县| 湘潭县| 乡城县| 务川| 景宁| 紫云| 基隆市| 永和县| 霍州市| 新巴尔虎右旗| 恩平市| 垫江县| 南雄市| 隆昌县| 遵义县| 宁陵县| 新丰县| 临朐县| 桓台县| 南涧| 海口市| 登封市| 蛟河市| 教育| 湘潭市| 通河县| 凤山县| 呼伦贝尔市| 汝城县| 通道| 乐陵市| 道真| 克东县| 株洲市| 米脂县| 磐安县| 柯坪县|