由于瀏覽器同源策略,限制了頁面無法引用第三方資源,無法請求不同源下面的資源,影響了web的發(fā)展,所以瀏覽器出讓了一些安全策略來滿足web的發(fā)展。
通過CSP安全策略來保證瀏覽器可以安全的加載第三方資源;
通過CORS允許瀏覽器跨域請求;
通過PostMessage來操作DOM
但這些策略也給了黑客攻擊我們的站點(diǎn)的機(jī)會。
web站點(diǎn)常見的攻擊方式包括:XSS攻擊
,CSRF攻擊
、Sql注入攻擊
等。
XSS攻擊(跨站腳本攻擊),黑客通過網(wǎng)站的漏洞,將惡意腳本插入Html頁面,當(dāng)用戶打開站點(diǎn)時,由于惡意腳本和站點(diǎn)代碼擁有同樣的執(zhí)行權(quán)限,惡意腳本就有可能篡改站點(diǎn)內(nèi)容,竊取用戶信息發(fā)送到第三方服務(wù)器。
惡意代碼一般會做下面這些攻擊:
獲取用戶Cookies
修改用戶DOM,偽造登錄頁面
生成浮窗廣告
監(jiān)聽用戶輸入
XSS攻擊常被分為三類:存儲型攻擊、反射型攻擊、基于DOM的XSS攻擊。
前兩種一般要經(jīng)過服務(wù)器,所以后端研發(fā)更需要注意,而最后一種沒有經(jīng)過服務(wù)器,是需要前端注意避免的。
一個真實(shí)的案例就是:2015年烏云網(wǎng)爆出來的,喜瑪拉雅站點(diǎn),編輯上傳專輯名稱,未對錄入表單進(jìn)行過濾,黑客可以上傳惡意腳本到服務(wù)器。當(dāng)其他用戶點(diǎn)擊這張專輯的時候,就執(zhí)行了惡意腳本,惡意腳本獲取用戶的Cookies信息,上傳到黑客的服務(wù)器,然后就可以登錄用戶的站點(diǎn)。
第一步:輸入惡意腳本到站點(diǎn),沒有過濾,所以可以上傳到服務(wù)器
第二步:當(dāng)用戶打開了當(dāng)前頁面,執(zhí)行了惡意腳本,后端代碼沒有禁止第三方站點(diǎn)發(fā)出的請求,所以黑客就獲取了用戶的Cookies,接著就可以訪問用戶的站點(diǎn)或者調(diào)用站點(diǎn)的API
反射型XSS攻擊的常見模式是,黑客發(fā)現(xiàn)了網(wǎng)站存在將url的參數(shù)直接在頁面上顯示,并且沒有過濾的情況,于是黑客就構(gòu)造帶有惡意腳本的鏈接,誘導(dǎo)用戶點(diǎn)擊,當(dāng)用戶點(diǎn)擊了鏈接,就將惡意代碼注入到了頁面并執(zhí)行,從而獲取用戶信息等。
反射型攻擊案例:
頁面中又直接渲染html的變量,直接渲染html的,如下代碼,直接讀取url參數(shù)query, 在頁面展示,如果后端服務(wù)沒有經(jīng)過過濾,就有可能將query的代碼引入頁面中執(zhí)行,造成攻擊
該攻擊可以是一些流氓軟件或攻擊路由器,在http請求返回的過程中,在返回的數(shù)據(jù)中插入了惡意代碼,前端站點(diǎn)如果沒有過濾,就可能出現(xiàn)執(zhí)行惡意代碼的情況。
1、頁面讀取html顯示,后端通過抓取郵件內(nèi)容,生成html,給到前端展示。由于郵件中可能存在一些非法標(biāo)簽,瀏覽器在解析中無法識別,就導(dǎo)致瀏覽器crash,常常使用插件或者js過濾,轉(zhuǎn)譯等。
2、給朋友發(fā)送一個頁面的腳本,其中alert了6次,并且獲取了瀏覽器Cookies
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>攻擊測試</title> </head> <body> <script> window.onload = () => { document.cookie = "username=test" for(let i=0; i<=5; i++){ alert(`你被攻擊了,我獲取了你的Cookies${document.cookie}`) } } </script> 你被攻擊了 </body> </html> 復(fù)制代碼
打開頁面后:
如果將其中的攻擊腳本插入用戶的頁面中,然后向第三方服務(wù)器發(fā)送cookies,這就構(gòu)成了XSS攻擊
我們來模擬下存儲型攻擊
一個惡意的腳本這里用Express搭建,端口9000
另外啟動一個http服務(wù)器,為我們的正常站點(diǎn),端口8080。
假設(shè),這個的網(wǎng)站存在漏洞,沒有過濾參數(shù),惡意腳本上傳到了服務(wù)器
當(dāng)用戶打開另一個頁面,可以加載了前一步錄入的內(nèi)容,我們發(fā)現(xiàn)惡意腳本已經(jīng)執(zhí)行
阻止XSS攻擊,要先知道XSS攻擊的原理:一般分為兩個步驟。
第一步:黑客找到站點(diǎn)的漏洞,想站點(diǎn)插入惡意腳本。
第二步:讀取站點(diǎn)的信息,發(fā)送到第三方服務(wù)器。
XSS攻擊主要有以下方法注入:
html中的script腳本
凡事可以請求第三方數(shù)據(jù)的地方:標(biāo)簽的屬性Img的src屬性、a標(biāo)簽的href屬性、background:url()
js腳本的拼接特殊字符
對于后端來說,主要有以下幾處常常不可信:
用戶輸入內(nèi)容
url參數(shù)
post參數(shù)
第三方的鏈接
referere
Cookies
對于存儲型XSS攻擊和反射型XSS攻擊,二者由于都需要過服務(wù)器,那么只要后端開發(fā)在入庫的時候最敏感代碼進(jìn)行過濾進(jìn)行過濾,就可以避免大部分的XSS攻擊。
目前對于前端的大部分組件(富文本組件)和常見的Vue、React框架都對展示的數(shù)據(jù),只會展示以字符串進(jìn)行展示。
對于有可能嵌入惡意代碼的部分也貼心的增加了提示:
如在Vue中:
<div v-html="html"></div> 復(fù)制代碼
在React中:
<div dangerouslySetInnerHTML = {{__html:<div><script src="http://xxs.js"></script></div>}} ></div> 復(fù)制代碼
這些可能導(dǎo)致XSS攻擊的地方,框架都給了顯著的提示,所以在頁面顯示這些不可控的內(nèi)容前要進(jìn)行過濾。
設(shè)置CSP,現(xiàn)在站點(diǎn)加載或發(fā)送請求到第三方服務(wù)器
給cookies設(shè)置了該屬性,當(dāng)前頁面重要的Cookie就無法通過js讀取,這樣黑客也就無法獲取用戶的信息
作者:前端中后臺
鏈接:https://juejin.cn/post/7041435485310287886
來源:稀土掘金
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/127962.html
摘要:劫持用戶是最常見的跨站攻擊形式,通過在網(wǎng)頁中寫入并執(zhí)行腳本執(zhí)行文件多數(shù)情況下是腳本代碼,劫持用戶瀏覽器,將用戶當(dāng)前使用的信息發(fā)送至攻擊者控制的網(wǎng)站或服務(wù)器中。預(yù)防將錄入的惡意標(biāo)簽進(jìn)行轉(zhuǎn)碼再存儲,主要在后端錄入的時候做。 xss定義 Cross Site Scripting的縮寫本來是CSS,但是這樣就跟Cascading Style Sheets的縮寫混淆了,所以使用XSS,使用字母X...
摘要:劫持用戶是最常見的跨站攻擊形式,通過在網(wǎng)頁中寫入并執(zhí)行腳本執(zhí)行文件多數(shù)情況下是腳本代碼,劫持用戶瀏覽器,將用戶當(dāng)前使用的信息發(fā)送至攻擊者控制的網(wǎng)站或服務(wù)器中。預(yù)防將錄入的惡意標(biāo)簽進(jìn)行轉(zhuǎn)碼再存儲,主要在后端錄入的時候做。 xss定義 Cross Site Scripting的縮寫本來是CSS,但是這樣就跟Cascading Style Sheets的縮寫混淆了,所以使用XSS,使用字母X...
摘要:一背景是一個非常經(jīng)典的滲透測試管理系統(tǒng),原作者在年所開發(fā),由于后來長時間沒有人維護(hù),導(dǎo)致目前在環(huán)境下無法運(yùn)行。 一、背景 XSS Platform 是一個非常經(jīng)典的XSS滲透測試管理系統(tǒng),原作者在2011年所開發(fā),由于后來長時間沒有人維護(hù),導(dǎo)致目前在PHP7環(huán)境下無法運(yùn)行。 筆者最近花了一點(diǎn)時間將源碼移植到了PHP7環(huán)境中,同時增加安裝功能;另外還修復(fù)之前的代碼的一些不嚴(yán)謹(jǐn)語法的問題,...
摘要:一背景是一個非常經(jīng)典的滲透測試管理系統(tǒng),原作者在年所開發(fā),由于后來長時間沒有人維護(hù),導(dǎo)致目前在環(huán)境下無法運(yùn)行。 一、背景 XSS Platform 是一個非常經(jīng)典的XSS滲透測試管理系統(tǒng),原作者在2011年所開發(fā),由于后來長時間沒有人維護(hù),導(dǎo)致目前在PHP7環(huán)境下無法運(yùn)行。 筆者最近花了一點(diǎn)時間將源碼移植到了PHP7環(huán)境中,同時增加安裝功能;另外還修復(fù)之前的代碼的一些不嚴(yán)謹(jǐn)語法的問題,...
摘要:一背景筆者最近在慕課錄制了一套跨站漏洞加強(qiáng)安全視頻教程,課程當(dāng)中有講到的挖掘方式,所以在錄制課程之前需要做大量實(shí)踐案例,最近視頻已經(jīng)錄制完成,準(zhǔn)備將這些漏洞的挖掘過程記錄下來,方便自己也方便他人。 一、背景 筆者最近在慕課錄制了一套XSS跨站漏洞 加強(qiáng)Web安全視頻教程,課程當(dāng)中有講到XSS的挖掘方式,所以在錄制課程之前需要做大量實(shí)踐案例,最近視頻已經(jīng)錄制完成,準(zhǔn)備將這些XSS漏洞的挖...
摘要:一背景筆者最近在慕課錄制了一套跨站漏洞加強(qiáng)安全視頻教程,課程當(dāng)中有講到的挖掘方式,所以在錄制課程之前需要做大量實(shí)踐案例,最近視頻已經(jīng)錄制完成,準(zhǔn)備將這些漏洞的挖掘過程記錄下來,方便自己也方便他人。 一、背景 筆者最近在慕課錄制了一套XSS跨站漏洞 加強(qiáng)Web安全視頻教程,課程當(dāng)中有講到XSS的挖掘方式,所以在錄制課程之前需要做大量實(shí)踐案例,最近視頻已經(jīng)錄制完成,準(zhǔn)備將這些XSS漏洞的挖...
閱讀 454·2024-11-07 18:25
閱讀 130762·2024-02-01 10:43
閱讀 943·2024-01-31 14:58
閱讀 904·2024-01-31 14:54
閱讀 83006·2024-01-29 17:11
閱讀 3263·2024-01-25 14:55
閱讀 2057·2023-06-02 13:36
閱讀 3166·2023-05-23 10:26