网络安全详细讲解
什么是 XSS?如何預(yù)防?
XSS 全稱是 Cross Site Scripting ,為了與CSS區(qū)分開來,故簡(jiǎn)稱 XSS,翻譯過來就是“跨站腳本”。
XSS是指黑客往 HTML 文件中或者 DOM 中注入惡意腳本,從而在用戶瀏覽頁面時(shí)利用注入的惡意腳本對(duì)用戶實(shí)施攻擊的一種手段。
最開始的時(shí)候,這種攻擊是通過跨域來實(shí)現(xiàn)的,所以叫“跨域腳本”。發(fā)展到現(xiàn)在,往HTML文件中中插入惡意代碼方式越來越多,所以是否跨域注入腳本已經(jīng)不是唯一的注入手段了,但是 XSS 這個(gè)名字卻一直保留至今。
注入惡意腳本可以完成這些事情:
竊取Cookie
監(jiān)聽用戶行為,比如輸入賬號(hào)密碼后之間發(fā)給黑客服務(wù)器
在網(wǎng)頁中生成浮窗廣告
修改DOM偽造登入表單
一般的情況下,XSS攻擊有三種實(shí)現(xiàn)方式
存儲(chǔ)型 XSS 攻擊
反射型 XSS 攻擊
基于 DOM 的 XSS 攻擊
- 存儲(chǔ)型 XSS 攻擊
存儲(chǔ)型 XSS 攻擊大致步驟如下:
首先黑客利用站點(diǎn)漏洞將一段惡意 JavaScript 代碼提交到網(wǎng)站的數(shù)據(jù)庫中;
然后用戶向網(wǎng)站請(qǐng)求包含了惡意 JavaScript 腳本的頁面;
當(dāng)用戶瀏覽該頁面的時(shí)候,惡意腳本就會(huì)將用戶的 Cookie 信息等數(shù)據(jù)上傳到服務(wù)器。
比如常見的場(chǎng)景:
在評(píng)論區(qū)提交一份腳本代碼,假設(shè)前后端沒有做好轉(zhuǎn)義工作,那內(nèi)容上傳到服務(wù)器,在頁面渲染的時(shí)候就會(huì)直接執(zhí)行,相當(dāng)于執(zhí)行一段未知的JS代碼。這就是存儲(chǔ)型 XSS 攻擊。
- 反射型 XSS 攻擊
反射型 XSS 攻擊指的就是惡意腳本作為「網(wǎng)絡(luò)請(qǐng)求的一部分」,隨后網(wǎng)站又把惡意的JavaScript腳本返回給用戶,當(dāng)惡意 JavaScript 腳本在用戶頁面中被執(zhí)行時(shí),黑客就可以利用該腳本做一些惡意操作。
舉個(gè)例子:
http://TianTianUp.com?query=<script>alert("你受到了XSS攻擊")</script>服務(wù)器拿到后解析參數(shù)query,最后將內(nèi)容返回給瀏覽器,瀏覽器將這些內(nèi)容作為HTML的一部分解析,發(fā)現(xiàn)是Javascript腳本,直接執(zhí)行,這樣子被XSS攻擊了。
這也就是反射型名字的由來,將惡意腳本作為參數(shù),通過網(wǎng)絡(luò)請(qǐng)求,最后經(jīng)過服務(wù)器,在反射到HTML文檔中,執(zhí)行解析。
主要注意的就是,「服務(wù)器不會(huì)存儲(chǔ)這些惡意的腳本,這也算是和存儲(chǔ)型XSS攻擊的區(qū)別吧」。
- 基于 DOM 的 XSS 攻擊
基于 DOM 的 XSS 攻擊是不牽涉到頁面 Web 服務(wù)器的。具體來講,黑客通過各種手段將惡意腳本注入用戶的頁面中,在數(shù)據(jù)傳輸?shù)臅r(shí)候劫持網(wǎng)絡(luò)數(shù)據(jù)包
常見的劫持手段有:
WIFI路由器劫持
本地惡意軟件
XSS 攻擊是指瀏覽器中執(zhí)行惡意腳本, 然后拿到用戶的信息進(jìn)行操作。主要分為存儲(chǔ)型、反射型和文檔型。防范的措施包括:
對(duì)輸入內(nèi)容過濾或者轉(zhuǎn)碼,尤其是類似于script、img、a標(biāo)簽
利用CSP
利用Cookie的HttpOnly屬性
什么是 CSRF?如何預(yù)防?
CSRF 英文全稱是 Cross-site request forgery,所以又稱為“跨站請(qǐng)求偽造”,是指黑客引誘用戶打開黑客的網(wǎng)站,在黑客的網(wǎng)站中,利用用戶的登錄狀態(tài)發(fā)起的跨站請(qǐng)求。簡(jiǎn)單來講,CSRF 攻擊就是黑客利用了用戶的登錄狀態(tài),并通過第三方的站點(diǎn)來做一些壞事。
一般的情況下,點(diǎn)開一個(gè)誘導(dǎo)你的鏈接,黑客會(huì)在你不知情的時(shí)候做哪些事情呢
- 自動(dòng)發(fā)起 Get 請(qǐng)求
在受害者訪問含有這個(gè)img的頁面后,瀏覽器會(huì)自動(dòng)向http://bank.example/withdraw?account=xiaoming&amount=10000&for=hacker發(fā)出一次HTTP請(qǐng)求。
bank.example就會(huì)收到包含受害者登錄信息的一次跨域請(qǐng)求。
- 自動(dòng)發(fā)起 POST 請(qǐng)求
訪問該頁面后,表單會(huì)自動(dòng)提交,相當(dāng)于模擬用戶完成了一次POST操作。
同樣也會(huì)攜帶相應(yīng)的用戶 cookie 信息,讓服務(wù)器誤以為是一個(gè)正常的用戶在操作,讓各種惡意的操作變?yōu)榭赡堋?/p>
CSRF攻擊原理,跟XSS對(duì)比的話,CSRF攻擊并不需要將惡意代碼注入HTML中,而是跳轉(zhuǎn)新的頁面,利用服務(wù)器的驗(yàn)證漏洞和用戶之前的登錄狀態(tài)來模擬用戶進(jìn)行操作。
CSRF(Cross-site request forgery), 即跨站請(qǐng)求偽造,本質(zhì)是沖著瀏覽器分不清發(fā)起請(qǐng)求是不是真正的用戶本人,所以防范的關(guān)鍵在于在請(qǐng)求中放入黑客所不能偽造的信息。從而防止黑客偽造一個(gè)完整的請(qǐng)求欺騙服務(wù)器。
防范措施:
驗(yàn)證碼機(jī)制,驗(yàn)證來源站點(diǎn),利用Cookie的SameSite屬性,CSRF Token
總結(jié)
- 上一篇: 细说中国各省省名的由来(zt)
- 下一篇: 倍福触摸屏维修操作面板维修CP7032-