W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
跨站腳本攻擊的概念是在一個(gè)網(wǎng)站的上下文中注入任意的 HTML (以及附帶的 JavaScript )。開發(fā)者需要正確地轉(zhuǎn)義文本,使其不能包含任意 HTML 標(biāo)簽來(lái)避免 這種攻擊。更多的信息請(qǐng)閱讀維基百科上關(guān)于 Cross-Site Scripting 的文章。
Flask 配置 Jinja2 自動(dòng)轉(zhuǎn)義所有值,除非顯式地指明不轉(zhuǎn)義。這就排除了模板導(dǎo) 致的所有 XSS 問(wèn)題,但是你仍需要在其它的地方小心:
另一件非常重要的事情是未用引號(hào)包裹的屬性。雖然 Jinja2 可以通過(guò)轉(zhuǎn)義 HTML 來(lái)保護(hù)你免受 XSS 問(wèn)題,仍有一種情況,它不能保護(hù)你: 屬性注入的 XSS 。為了 應(yīng)對(duì)這種攻擊媒介,確保當(dāng)在屬性中使用 Jinja 表達(dá)式時(shí),始終用單引號(hào)或雙引號(hào) 包裹屬性:
<a href="{{ href }}">the text</a>
為什么這是必要的?因?yàn)槿绻悴贿@么做,攻擊者可以容易地注入自制的 JavaScript 處理器。譬如一個(gè)攻擊者可以注入這段 HTML+JavaScript:
onmouseover=alert(document.cookie)
當(dāng)用戶鼠標(biāo)經(jīng)過(guò)這個(gè)鏈接, 會(huì)在警告窗口里把 cookie 顯示給用戶。一個(gè)精明的 攻擊者可能也會(huì)執(zhí)行其它的 JavaScript 代碼,而不是把 cookie 顯示給用戶。 同 CSS 注入聯(lián)系在一起,攻擊者甚至使得元素填滿整個(gè)頁(yè)面,這樣用戶鼠標(biāo)在頁(yè)面 上的任何地方都會(huì)觸發(fā)攻擊。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: