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