二、web安全(xss/csrf)簡(jiǎn)單攻擊原理和防御方案(實(shí)戰(zhàn)篇)

介紹: 身為一個(gè)不怎么接觸后臺(tái)的前端,一直想知道web安全究竟是怎么攻擊的以及做了哪些處理,什么htttp響應(yīng)頭設(shè)置總是一臉懵。最近在學(xué)習(xí)node,就順便寫了web安全攻擊的示例以及解決方案。參考了一些資料,自己理了一下思路,代碼不是很完善,也是在摸索階段,請(qǐng)見諒。希望對(duì)那些對(duì)于安全不是很了解,后臺(tái)知識(shí)不清楚的同學(xué)有所幫助。

(解決方案看上一篇文章,這里主要演示一下攻擊原理https://juejin.cn/post/6951571103953190925

代碼:git@github.com:StyLanQP/web-Safe.git

github地址:https://github.com/StyLanQP/web-Safe

項(xiàng)目代碼如下:

app: 正常的網(wǎng)站
hack:模擬黑客攻擊的網(wǎng)站
使用技術(shù): node+express+react+mysql

一、XSS(Cross-Site Scripting) 跨站腳本攻擊

原理:惡意攻擊者往 Web 頁(yè)面里插入惡意可執(zhí)行網(wǎng)頁(yè)腳本代碼,當(dāng)用戶瀏覽該頁(yè)之時(shí),嵌入其中 Web 里面的腳本代碼會(huì)被執(zhí)行,從而可以達(dá)到攻擊者盜取用戶信息或其他侵犯用戶安全隱私的目的。

1.代碼目錄
WechatIMG3062.jpeg
2. 建立數(shù)據(jù)庫(kù)
WechatIMG31.jpeg

node app/mysql.js 先執(zhí)行這個(gè)文件創(chuàng)建表和數(shù)據(jù)

WechatIMG32.jpeg
如圖所示
WechatIMG30.jpeg
3.這時(shí)候運(yùn)行項(xiàng)目npm run start 打開home頁(yè)面
WechatIMG33.jpeg
WechatIMG34.jpeg
WechatIMG36.jpeg

這個(gè)時(shí)候home頁(yè)面是用react模板寫的,React DOM 會(huì)在渲染的時(shí)候把內(nèi)容(字符串)進(jìn)行轉(zhuǎn)義,所以字符串形式的標(biāo)簽是不會(huì)作為 HTML 標(biāo)簽進(jìn)行處理的,所以輸入script是不能執(zhí)行的

所以加了一個(gè)利用ejs模板加載的頁(yè)面xss.html(無(wú)論是從url上輸入script標(biāo)簽例如http://localhost:4000/xss?text=<script>alert(2)</script>還是直接獲取數(shù)據(jù)庫(kù)存儲(chǔ)的代碼都會(huì)被執(zhí)行)

WechatIMG38.jpeg

WechatIMG37.jpeg
WechatIMG39.jpeg
4.開始利用document.cookie攻擊,按照剛才的方式把<script>alert(1)</script>改成<script src="http://localhost:5000/xss.html"></script>進(jìn)行攻擊

打開http://localhost:4000/xss會(huì)看到請(qǐng)求了http://localhost:5000/xss.html的接口

WechatIMG41.jpeg

在控制臺(tái)可以看到5000端口的黑客網(wǎng)站已經(jīng)打印出來(lái)了cookie,利用cookie我們完全可以在控制臺(tái)設(shè)置cookie直接登錄網(wǎng)站


WechatIMG42.jpeg

二、CSRF 跨站點(diǎn)偽造

原理: 誘導(dǎo)用戶打開黑客的網(wǎng)站,在黑客的網(wǎng)站中,利用用戶登錄狀態(tài)發(fā)起跨站點(diǎn)請(qǐng)求。

1.在登錄狀態(tài)下,打開localhost:5000/csrf.html頁(yè)面,在控制臺(tái)上我們看到了setDataList的請(qǐng)求,這個(gè)就是提交內(nèi)容的接口,在4000的home頁(yè)面可以看到內(nèi)容改變了


image.png

正常網(wǎng)站內(nèi)容被更改


WechatIMG44.png
image.png

解決方案(生成token, 接口帶上nonce和timesTamp)

WechatIMG47.jpeg
WechatIMG46.jpeg

三、點(diǎn)擊劫持

原理:用戶在登陸 A 網(wǎng)站的系統(tǒng)后,被攻擊者誘惑打開第三方網(wǎng)站,而第三方網(wǎng)站通過(guò) iframe 引入了 A 網(wǎng)站的頁(yè)面內(nèi)容,用戶在第三方網(wǎng)站中點(diǎn)擊某個(gè)按鈕(被裝飾的按鈕),實(shí)際上是點(diǎn)擊了 A 網(wǎng)站的按鈕。

  1. 打開http://localhost:5000/clickHijack.html點(diǎn)擊按鈕,實(shí)際上是點(diǎn)擊了http://localhost:4000/home的關(guān)注按鈕,因?yàn)閕frame嵌入了4000的頁(yè)面,因?yàn)?000
    30.jpeg
31.jpeg
WechatIMG50.jpeg

解決方案,對(duì)iframe嵌入做限制

image.png
WechatIMG51.jpeg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容