XSS的原理和防范方式
XSS全稱Cross Site Scripting即跨站腳本攻擊舔箭。
惡意用戶將惡意腳本裝作普通文本的樣式上傳到服務(wù)器莹捡,這些文本將被渲染到目標(biāo)用戶的頁面上棚蓄,從而被執(zhí)行,這樣的流程稱之為‘跨站腳本攻擊’畔塔。
舉例:有一個(gè)發(fā)表評(píng)論的功能抹竹,一個(gè)人發(fā)表了評(píng)論大家就都能看見,于是惡意用戶就在這個(gè)評(píng)論區(qū)發(fā)表了以下代碼:
<script>console.log(document.cookie)</script>
如果這個(gè)代碼未經(jīng)過濾直接執(zhí)行父泳,那么攻擊者將會(huì)收集所有訪問這個(gè)評(píng)論區(qū)的用戶的cookie以便執(zhí)行只有目標(biāo)用戶才有權(quán)限做的事情般哼。
通常,我們可以通過以下方式來防止xss攻擊:
1. 轉(zhuǎn)義 < > 這些特殊字符為實(shí)體字符
2. 利用正則判斷攻擊腳本
3. 盡量修改節(jié)點(diǎn)文本而不是修改節(jié)點(diǎn)內(nèi)容html
CSRF的原理和防范方式
CSRF全稱Cross-site request forgery(跨站請(qǐng)求偽造)是指惡意用戶將某些需要他人權(quán)限的接口埋藏在自己的腳本中惠窄,將腳本利用XSS相同的注入方式或誘導(dǎo)用戶點(diǎn)擊執(zhí)行等方式令擁有權(quán)限者執(zhí)行蒸眠,從而達(dá)到自己的目的。
例如睬捶,惡意用戶想要給某個(gè)人刷票黔宛,而一個(gè)微信號(hào)只能投一張票,他發(fā)現(xiàn)了刷票的接口為A,則將對(duì)A進(jìn)行Ajax請(qǐng)求的XSS腳本注入某網(wǎng)站(方法1),或者利用像色情等吸引眼球的方法(方法2)將此段腳本內(nèi)嵌入自己寫的網(wǎng)頁中誘使他人點(diǎn)擊臀晃,從而實(shí)現(xiàn)不斷有有效用戶訪問這個(gè)接口的目的觉渴。
我們通常可以使用以下手段來防止CSRF攻擊:
1. 盡量對(duì)要修改數(shù)據(jù)的請(qǐng)求使用post而不是get
2. 給每一次用戶登陸分配一個(gè)臨時(shí)token徽惋,用服務(wù)端的setCookie頭將此token種入用戶cookie中案淋,每次請(qǐng)求比對(duì)用戶方token與服務(wù)器端token是否吻合。
3. 服務(wù)器禁止跨域請(qǐng)求
4. 及時(shí)清除用戶的無效cookie