tooken http://www.cnblogs.com/bukudekong/p/3829875.html
所謂攻擊,即黑客利用網(wǎng)站操作系統(tǒng)的漏洞和Web服務(wù)程序的SQL注入漏洞等得到Web服務(wù)器的控制權(quán)限,輕則篡改網(wǎng)頁(yè)內(nèi)容,重則竊取重要內(nèi)部數(shù)據(jù),更為嚴(yán)重的則是在網(wǎng)頁(yè)中植入惡意代碼,使得網(wǎng)站訪問者受到侵害。
常見的Web攻擊技術(shù):
- XSS(Cross-Site Scripting,跨站腳本攻擊):指通過(guò)在存在安全漏洞的Web網(wǎng)站注冊(cè)用戶的瀏覽器內(nèi)運(yùn)行非法的HTML標(biāo)簽或JavaScript進(jìn)行的一種攻擊.重點(diǎn)是跨域和客戶端執(zhí)行
- SQL注入攻擊
- CSRF(Cross-Site Request Forgeries,跨站點(diǎn)請(qǐng)求偽造):指攻擊者通過(guò)設(shè)置好的陷阱,強(qiáng)制對(duì)已完成的認(rèn)證用戶進(jìn)行非預(yù)期的個(gè)人信息或設(shè)定信息等某些狀態(tài)更新.
CSRF的核心就是請(qǐng)求偽造,通過(guò)偽造身份提交POST和GET請(qǐng)求來(lái)進(jìn)行跨域的攻擊。完成CSRF需要兩個(gè)步驟:
- 登陸受信任的網(wǎng)站A,在本地生成cookie
- 在不登出A的情況下,或者本地cookie沒有過(guò)期的情況下,訪問危險(xiǎn)網(wǎng)站B
1. XSS的原理
XSS其實(shí)就是Html的注入問題,攻擊者的輸入沒有經(jīng)過(guò)嚴(yán)格的控制進(jìn)入了數(shù)據(jù)庫(kù),最終顯示給來(lái)訪的用戶,導(dǎo)致可以在來(lái)訪用戶的瀏覽器里以瀏覽用戶的身份執(zhí)行Html代碼,數(shù)據(jù)流程如下:攻擊者的Html輸入—>web程序—>進(jìn)入數(shù)據(jù)庫(kù)—>web程序—>用戶瀏覽器。
2. XSS的攻擊方式
1.反射型 Reflected XSS
發(fā)出請(qǐng)求時(shí),XSS代碼出現(xiàn)在URL中,作為輸入提交到服務(wù)器端,服務(wù)器端解析后響應(yīng),XSS代碼隨響應(yīng)內(nèi)容一起傳回給瀏覽器,最后瀏覽器解析執(zhí)行XSS代碼。這個(gè)過(guò)程像一次反射,故叫反射型。
router.get('/', function(req, res, next) {
res.set('X-XSS-Protection',0);//禁止瀏覽器對(duì)XSS進(jìn)行攔截
res.render('index', { title: 'Express',xss:req.query.xss});//獲取url中的參數(shù)做解析xss
});
<body>
<h1><%= title %></h1>
<p>Welcome to <%= title %></p>
<div class="">
<%- xss %> <!--執(zhí)行xss腳本-->
</div>
</body>
瀏覽器地址欄輸入格式如http://localhost:3000/?xss=<img src="" onerror="alert(1)"/>
-
輸入xss等于一個(gè)<img>標(biāo)簽,圖片會(huì)顯示在頁(yè)面中 彈出1
img攻擊.png -
如果xss腳本是一iframe,可以植入廣告
iframe.png
2.存儲(chǔ)型 Stored XSS
存儲(chǔ)型XSS和反射型XSS的差別僅在于,提交的代碼會(huì)存儲(chǔ)在服務(wù)器端(數(shù)據(jù)庫(kù)、內(nèi)存、文件系統(tǒng)等),下次請(qǐng)求目標(biāo)頁(yè)面時(shí)不用再次提交XSS代碼。
res.render('index', { title: 'Express',xss:sql()});//sql語(yǔ)句操作
3.基于DOM或本地的XSS攻擊 DOM-based or local XSS
一般是提供一個(gè)免費(fèi)的wifi,但是提供免費(fèi)wifi的網(wǎng)關(guān)會(huì)往你訪問的任何頁(yè)面插入一段腳本或者直接返回一個(gè)釣魚頁(yè)面,從而植入惡意腳本。這種直接存在于頁(yè)面,無(wú)須經(jīng)過(guò)服務(wù)器返回就是基于本地的XSS攻擊。
3. XSS的防御措施
- 編碼
對(duì)用戶輸入的數(shù)據(jù)進(jìn)行HTML Entity編碼 - 過(guò)濾
移除用戶上傳的DOM屬性,如onerror等,要過(guò)濾掉用戶上傳的事件
移除用戶上傳的Style節(jié)點(diǎn)、Script節(jié)點(diǎn)、Iframe節(jié)點(diǎn)等。如用戶上傳body{displat:none;}
這樣我們的頁(yè)面什么都不顯示了。 - 校正
避免直接對(duì)HTML Entity解碼
使用DOM Parse轉(zhuǎn)換,校正不配對(duì)的DOM標(biāo)簽
4. 攻擊目的和手段
攻擊者使被攻擊者在瀏覽器中執(zhí)行腳本后,如果需要收集來(lái)自被攻擊者的數(shù)據(jù)(如cookie或其他敏感信息),可以自行架設(shè)一個(gè)網(wǎng)站,讓被攻擊者通過(guò)JavaScript等方式把收集好的數(shù)據(jù)作為參數(shù)提交,隨后以數(shù)據(jù)庫(kù)等形式記錄在攻擊者自己的服務(wù)器上。
- 盜用 cookie ,獲取敏感信息。
- 利用植入 Flash ,通過(guò) crossdomain 權(quán)限設(shè)置進(jìn)一步獲取更高權(quán)限;或者利用Java等得到類似的操作。
- 利用 iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻擊)用戶的身份執(zhí)行一些管理動(dòng)作,或執(zhí)行一些一般的如發(fā)微博、加好友、發(fā)私信等操作。
- 利用可被攻擊的域受到其他域信任的特點(diǎn),以受信任來(lái)源的身份請(qǐng)求一些平時(shí)不允許的操作,如進(jìn)行不當(dāng)?shù)耐镀被顒?dòng)。
- 在訪問量極大的一些頁(yè)面上的XSS可以攻擊一些小型網(wǎng)站,實(shí)現(xiàn)DDoS攻擊的效果。
- 破壞頁(yè)面正常結(jié)構(gòu),插入惡意內(nèi)容.