1.XSS
什么是XSS拌屏?
XSS是跨站腳本攻擊(Cross-Site Scripting)的簡稱。
XSS的本質(zhì)是瀏覽器錯誤的將攻擊者提供的用戶輸入數(shù)據(jù)當(dāng)做JavaScript腳本給執(zhí)行党觅。
防御
對輸入進(jìn)行嚴(yán)格的數(shù)據(jù)編碼雌澄。
設(shè)置CSP HTTP Header、輸入驗(yàn)證杯瞻、開啟瀏覽器XSS防御镐牺。
參考文章
前端防御從入門到棄坑--CSP變遷
CSP Is Dead, Long Live CSP! 翻譯
2.iframe
什么是iframe?
iframe是一個容器魁莉。該容器可以把另一個HTML頁面嵌入到當(dāng)前頁面睬涧。
iframe中的內(nèi)容是由第三方來提供的,默認(rèn)情況下他們不受我們的控制沛厨,他們可以在iframe中運(yùn)行JavaScirpt腳本宙地、Flash插件、彈出對話框等等逆皮,這可能會破壞前端用戶體驗(yàn)。
iframe中的域名因?yàn)檫^期而被惡意攻擊者搶注参袱,iframe中的內(nèi)容被替換掉了电谣,從而利用用戶瀏覽器中的安全漏洞下載安裝木馬、惡意勒索軟件抹蚀。
防御
使用iframe的sandbox的安全屬性剿牺。
參考文章
3.點(diǎn)擊劫持
什么是點(diǎn)擊劫持?
通過iframe引用第三方內(nèi)容环壤,制作一個透明層到上面晒来,引導(dǎo)到自己的頁面。
防御
使用X-Frame-Options:DENY這個HTTP Header來阻止別人iframe引用自家頁面郑现。
參考文章
X-Frame-Options防止網(wǎng)頁放在iframe中
X-Frame-Options 響應(yīng)頭
4.瀏覽器的容錯能力
瀏覽器怎么容錯湃崩?
部分瀏覽器根據(jù)響應(yīng)內(nèi)容來推斷其類型荧降,而不是根據(jù)響應(yīng)頭(Content-Type Header)的MIME types屬性。
某網(wǎng)站允許用戶在評論里上傳圖片攒读,攻擊者在上傳圖片的時候朵诫,看似提交的是個圖片文件,實(shí)則是個含有JavaScript的腳本文件薄扁。該文件逃過了文件類型校驗(yàn)剪返。 受害者在訪問這段評論的時候,瀏覽器會去請求這個偽裝成圖片的JavaScript腳本邓梅。
后端通過Content-Type Header建議瀏覽器按照圖片來渲染這次的HTTP響應(yīng)脱盲,但是瀏覽器發(fā)現(xiàn)響應(yīng)中其實(shí)是JavaScript,于是就擅自做主把這段響應(yīng)當(dāng)做JS腳本來解釋執(zhí)行
防御
設(shè)置X-Content-Type-Options這個HTTP Header明確禁止瀏覽器去推斷響應(yīng)類型日缨。
參考文章
5.HTTPS中間人攻擊
瀏覽器發(fā)出去第一次請求就被攻擊者攔截了下來并做了修改钱反,根本不給瀏覽器和服務(wù)器進(jìn)行HTTPS通信的機(jī)會。大致過程如下殿遂,用戶在瀏覽器里輸入URL的時候往往不是從https://開始的诈铛,而是直接從域名開始輸入,隨后瀏覽器向服務(wù)器發(fā)起HTTP通信墨礁,然而由于攻擊者的存在幢竹,它把服務(wù)器端返回的跳轉(zhuǎn)到HTTPS頁面的響應(yīng)攔截了,并且代替客戶端和服務(wù)器端進(jìn)行后續(xù)的通信恩静。由于這一切都是暗中進(jìn)行的焕毫,所以使用前端應(yīng)用的用戶對此毫無察覺。
防御
使用HSTS驶乾。