跨站腳本( cross site script)XSS
- 攻擊方式
- 通過正常途徑(評(píng)論輸入、表單提交、富文本編輯器)注入拼接的惡意腳本,竊取用戶信息
- 解決方案
- 站點(diǎn)首頁(yè)請(qǐng)求設(shè)置 content-security-policy響應(yīng)頭,規(guī)定哪些腳本可以被執(zhí)行
- 對(duì)用戶輸入內(nèi)容進(jìn)行轉(zhuǎn)義、防止惡意腳本被執(zhí)行
- 響應(yīng)的cookies設(shè)置httpOnly屬性,規(guī)定腳本不能讀取用戶cookies
跨站請(qǐng)求偽造(cross site request forgery)CSRF
- 攻擊方式
- 用戶登錄A保存cookies,然后引導(dǎo)用戶點(diǎn)訪問攻擊者提供的B站點(diǎn),在B站點(diǎn)內(nèi)訪問A
- 這時(shí)發(fā)送的請(qǐng)求就會(huì)攜帶A站點(diǎn)的cookies
- 解決方案
- 可以對(duì) Cookie 設(shè)置 SameSite 屬性。該屬性表示 Cookie 不隨著跨域請(qǐng)求發(fā)送,可以很大程度減少 CSRF 的攻擊,但是該屬性目 前并不是所有瀏覽器都兼容。
- 服務(wù)端通過檢查http請(qǐng)求頭頭referer的值是不是這個(gè)本站,來(lái)判斷是不是CSRF攻擊。
- 用戶登錄時(shí)生成一個(gè)token或者sessionId,然后返回給用戶,每次向服務(wù)端發(fā)起請(qǐng)求時(shí)請(qǐng)求頭攜帶該令牌,服務(wù)端驗(yàn)證令牌是否存在且有效才放行該請(qǐng)求。
- 為關(guān)鍵操作添加驗(yàn)證碼校驗(yàn)。