一文詳細(xì)講講7種常見的前端攻擊
前言
大家都知道,保證網(wǎng)站的安全是十分重要的,一旦網(wǎng)站被攻陷,就有可能造成用戶的經(jīng)濟(jì)損失,隱私泄露,網(wǎng)站功能被破壞,或者是傳播惡意病毒等重大危害。所以下面我們就來講講7 種常見的前端攻擊。
1. 跨站腳本 (XSS)
跨站腳本攻擊 (XSS) 是一種注入攻擊,攻擊者通過將惡意腳本注入到網(wǎng)頁中,欺騙用戶瀏覽器執(zhí)行,從而竊取用戶敏感信息或破壞網(wǎng)站。XSS 攻擊是 Web 應(yīng)用程序中最常見的安全威脅之一,也是造成重大安全事故的常見原因。
攻擊方式:
反射型 XSS: 攻擊者將惡意腳本注入到用戶提交的數(shù)據(jù)中,例如評(píng)論表單、搜索表單等。當(dāng)用戶提交數(shù)據(jù)時(shí),惡意腳本會(huì)被原樣反射回用戶瀏覽器,并被執(zhí)行。
存儲(chǔ)型 XSS: 攻擊者將惡意腳本存儲(chǔ)在服務(wù)器端,例如將惡意腳本注入到數(shù)據(jù)庫中。當(dāng)用戶訪問包含惡意腳本的頁面時(shí),惡意腳本會(huì)被瀏覽器執(zhí)行。
DOM 型 XSS: 攻擊者利用瀏覽器 DOM 的漏洞來執(zhí)行惡意腳本。例如,攻擊者可以利用
<script>
標(biāo)簽的onerror
屬性來執(zhí)行惡意腳本。
防御措施:
對(duì)用戶輸入進(jìn)行轉(zhuǎn)義和過濾: 使用 HTML 實(shí)體轉(zhuǎn)義或其他安全編碼方法來轉(zhuǎn)義用戶輸入中的特殊字符,防止惡意腳本注入。
使用 HTTPOnly Cookie: 將 Cookie 的
HttpOnly
屬性設(shè)置為true
,可以防止 JavaScript 代碼直接訪問 Cookie。使用 Content Security Policy (CSP): CSP 是一種通過配置瀏覽器安全機(jī)制來限制網(wǎng)頁中可執(zhí)行內(nèi)容的安全技術(shù)。
使用前端常用框架 (如Vue,React等):這些框架模板字符一般都經(jīng)過轉(zhuǎn)義和過濾,具有一定的安全性 。代碼示例
<form action="/submit_comment"> <input type="text" name="comment" value=""> <button type="submit">提交評(píng)論</button> </form>
上面表單中沒有對(duì)用戶輸入的評(píng)論進(jìn)行過濾,攻擊者可以輸入惡意JavaScript代碼,例如:
<script> alert(document.cookie); // 竊取用戶Cookie </script>
當(dāng)用戶提交評(píng)論時(shí),惡意代碼會(huì)被嵌入到評(píng)論中,并保存在服務(wù)器上。
當(dāng)其他用戶訪問包含惡意評(píng)論的頁面時(shí),惡意代碼會(huì)被瀏覽器執(zhí)行,從而竊取用戶Cookie或造成其他傷害。
2. 依賴庫風(fēng)險(xiǎn)
前端網(wǎng)站通常會(huì)依賴很多的第三方庫和組件來實(shí)現(xiàn)各種功能。如果這些依賴庫存在漏洞,攻擊者可以利用這些漏洞來攻擊網(wǎng)站。
攻擊方式:
遠(yuǎn)程代碼執(zhí)行 (RCE): 攻擊者可以利用依賴庫漏洞在受害者的瀏覽器或服務(wù)器上執(zhí)行任意代碼。
跨站請(qǐng)求偽造 (CSRF): 攻擊者可以利用依賴庫漏洞偽造用戶請(qǐng)求,誘騙用戶執(zhí)行非預(yù)期的操作。
防御措施:
使用經(jīng)過安全審計(jì)的依賴庫: 選擇使用經(jīng)過安全審計(jì)的依賴庫,可以減少依賴庫漏洞的風(fēng)險(xiǎn)。
定期更新依賴庫: 定期更新依賴庫,及時(shí)修復(fù)已知的安全漏洞。
盡量減少對(duì)第三方庫的依賴: 盡量減少對(duì)第三方庫的依賴,自己開發(fā)代碼,可以
代碼示例:
// 使用存在漏洞的第三方庫 const jsdom = require("jsdom"); jsdom.jsdom('<script>alert(1)</script>'); // 解析包含惡意JavaScript代碼的HTML
3. 跨站請(qǐng)求偽造 (CSRF)
跨站請(qǐng)求偽造 (CSRF) 是一種安全攻擊,攻擊者誘騙用戶在其已登錄的應(yīng)用程序中執(zhí)行非預(yù)期的操作,例如轉(zhuǎn)賬、修改個(gè)人信息等。CSRF 攻擊通常利用用戶的信任來實(shí)施,因?yàn)橛脩粼谧约旱臑g覽器中看到的是來自可信網(wǎng)站的請(qǐng)求,而沒有意識(shí)到該請(qǐng)求實(shí)際上是被攻擊者偽造的。
攻擊方式:
利用表單提或者鏈接跳轉(zhuǎn)。攻擊者會(huì)構(gòu)造一個(gè)惡意表單或者鏈接,誘騙用戶點(diǎn)擊。當(dāng)用戶點(diǎn)擊表單時(shí),會(huì)向受害者的應(yīng)用程序發(fā)送一個(gè) POST 請(qǐng)求或者GET 請(qǐng)求,其中包含攻擊者想要執(zhí)行的操作。
利用圖片請(qǐng)求: 攻擊者利用瀏覽器對(duì)圖片的自動(dòng)請(qǐng)求特性,構(gòu)造一個(gè)包含惡意請(qǐng)求的圖片。當(dāng)用戶瀏覽包含惡意圖片的頁面時(shí),瀏覽器會(huì)自動(dòng)向受害者的應(yīng)用程序發(fā)送請(qǐng)求,其中包含攻擊者想要執(zhí)行的操作。
防御措施:
在表單中添加 CSRF 令牌: 在表單中添加一個(gè)隨機(jī)生成的 CSRF 令牌,并將其作為隱藏域提交給服務(wù)器。服務(wù)器端在驗(yàn)證用戶請(qǐng)求時(shí),會(huì)檢查 CSRF 令牌的有效性。
使用 HTTP Referer 頭: 使用 HTTP Referer 頭來檢查請(qǐng)求來源,防止跨域請(qǐng)求。
使用 SameSite Cookie 屬性: 將 Cookie 的
SameSite
屬性設(shè)置為Strict
,可以防止 CSRF 攻擊。
代碼示例:
<form action="/transfer"> <input type="hidden" name="amount" value="1000"> <input type="submit" value="轉(zhuǎn)賬"> </form>
上面的表單中沒有使用CSRF令牌,攻擊者可以構(gòu)造一個(gè)惡意鏈接,誘騙用戶點(diǎn)擊。
當(dāng)用戶點(diǎn)擊惡意鏈接時(shí),會(huì)向轉(zhuǎn)賬頁面發(fā)送一個(gè)POST請(qǐng)求,其中包含轉(zhuǎn)賬金額等信息。
由于用戶的瀏覽器會(huì)自動(dòng)攜帶Cookie,攻擊者可以利用Cookie來冒充用戶身份,執(zhí)行轉(zhuǎn)賬操作。
4. 點(diǎn)擊劫持 (Clickjacking)
點(diǎn)擊劫持 (Clickjacking) 是一種欺騙攻擊,攻擊者在可信賴的頁面上使用透明或半透明的覆蓋層來欺騙用戶點(diǎn)擊他們所看到的以外的內(nèi)容,例如按鈕或鏈接。當(dāng)用戶點(diǎn)擊覆蓋層時(shí),實(shí)際上點(diǎn)擊的是攻擊者精心設(shè)計(jì)的惡意內(nèi)容,例如釣魚網(wǎng)站或下載惡意軟件的鏈接。
攻擊方式:
利用透明層: 攻擊者在可信賴的頁面上使用透明層覆蓋真正的鏈接或按鈕。當(dāng)用戶點(diǎn)擊頁面時(shí),實(shí)際上點(diǎn)擊的是透明層中的惡意內(nèi)容。
利用iframe: 攻擊者在可信賴的頁面中嵌入一個(gè)iframe,iframe的內(nèi)容是一個(gè)精心設(shè)計(jì)的惡意頁面。當(dāng)用戶點(diǎn)擊頁面時(shí),實(shí)際上點(diǎn)擊的是iframe中的惡意內(nèi)容。
利用CSS定位: 攻擊者利用CSS定位技術(shù)將惡意內(nèi)容定位在可信賴的頁面之上。當(dāng)用戶點(diǎn)擊頁面時(shí),實(shí)際上點(diǎn)擊的是惡意內(nèi)容。
防御措施:
使用 X-Frame-Options 頭: 在服務(wù)器端設(shè)置 X-Frame-Options 頭,禁止其他網(wǎng)站嵌入本網(wǎng)站的頁面。
使用 Content Security Policy (CSP): CSP 是一種通過配置瀏覽器安全機(jī)制來限制網(wǎng)頁中可執(zhí)行內(nèi)容的安全技術(shù)。
避免使用透明層: 盡量避免在頁面中使用透明層,如果必須使用,則需要仔細(xì)測試并確保透明層不會(huì)被攻擊者利用。
示例:
<div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0.7;"> <button style="position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);">點(diǎn)擊我</button> </div> <a rel="external nofollow" >真正的鏈接</a>
上述代碼中,存在一個(gè)透明的覆蓋層,覆蓋了真正的鏈接。
當(dāng)用戶點(diǎn)擊頁面時(shí),實(shí)際上點(diǎn)擊的是覆蓋層中的按鈕,而不是真正的鏈接。
攻擊者可以利用此漏洞來誘騙用戶執(zhí)行惡意操作,例如訪問釣魚網(wǎng)站或下載惡意軟件。
5. 內(nèi)容交付網(wǎng)絡(luò) (CDN) 劫持
內(nèi)容交付網(wǎng)絡(luò) (CDN) 劫持是指攻擊者劫持 CDN 節(jié)點(diǎn),修改 CDN 上的庫文件,在其中注入惡意代碼,進(jìn)而使應(yīng)用程序的用戶下載到這些惡意代碼。CDN 劫持攻擊通常利用 CDN 節(jié)點(diǎn)的安全漏洞或配置錯(cuò)誤來實(shí)施。
攻擊方式:
利用 CDN 節(jié)點(diǎn)漏洞: 攻擊者利用 CDN 節(jié)點(diǎn)的漏洞,例如 SQL 注入、遠(yuǎn)程代碼執(zhí)行 (RCE) 等,獲取對(duì) CDN 節(jié)點(diǎn)的控制權(quán)。
利用 CDN 配置錯(cuò)誤: 攻擊者利用 CDN 配置錯(cuò)誤,例如未啟用 SSL/TLS 加密、未配置訪問控制等,將惡意代碼注入到 CDN 節(jié)點(diǎn)上。
防御措施:
使用 HTTPS 加密: 在 CDN 節(jié)點(diǎn)和用戶瀏覽器之間使用 HTTPS 加密,可以防止攻擊者竊取或篡改傳輸數(shù)據(jù)。
使用內(nèi)容完整性驗(yàn)證 (CV): 使用 CV 技術(shù)來確保 CDN 內(nèi)容的完整性,防止惡意代碼被注入。
定期監(jiān)控 CDN 節(jié)點(diǎn): 定期監(jiān)控 CDN 節(jié)點(diǎn)的安全狀況,及時(shí)發(fā)現(xiàn)并修復(fù)安全漏洞。
選擇可靠的 CDN 服務(wù)商: 選擇可靠的 CDN 服務(wù)商,可以降低被攻擊的風(fēng)險(xiǎn)。
6. HTTPS 降級(jí)
HTTPS 降級(jí)是指攻擊者誘使用戶使用不安全的 HTTP 連接訪問應(yīng)用程序,從而竊取用戶敏感信息。HTTPS 是一種安全協(xié)議,可以對(duì)傳輸數(shù)據(jù)進(jìn)行加密,防止攻擊者竊取或篡改。然而,一些舊的瀏覽器或設(shè)備可能不支持 HTTPS,或者用戶可能被攻擊者誘騙使用不安全的 HTTP 連接。
攻擊方式:
利用社會(huì)工程: 攻擊者通過社交工程手段,例如釣魚網(wǎng)站、虛假信息等,誘騙用戶點(diǎn)擊不安全的鏈接。
利用瀏覽器漏洞: 攻擊者利用瀏覽器漏洞,將用戶重定向到不安全的 HTTP 連接。
利用中間人攻擊: 攻擊者在用戶和服務(wù)器之間進(jìn)行攔截,將用戶連接降級(jí)為不安全的 HTTP 連接。
防御措施:
強(qiáng)制使用 HTTPS: 在服務(wù)器端強(qiáng)制使用 HTTPS 連接,并禁止 HTTP 連接。
使用 HSTS 頭: 在服務(wù)器端設(shè)置 HSTS 頭,告訴瀏覽器始終使用 HTTPS 連接訪問該網(wǎng)站。
示例:
<a rel="external nofollow" >訪問網(wǎng)站</a>
上面的鏈接使用不安全的HTTP協(xié)議,攻擊者可以監(jiān)聽用戶的網(wǎng)絡(luò)流量,竊取用戶Cookie、表單數(shù)據(jù)等敏感信息。
7. 中間人攻擊
中間人攻擊 (Man-in-the-Middle Attack) 是攻擊者在用戶和服務(wù)器之間進(jìn)行攔截,竊取或篡改通信內(nèi)容。中間人攻擊通常利用不安全的網(wǎng)絡(luò)連接或 Wi-Fi 熱點(diǎn)來實(shí)施。
攻擊方式:
利用不安全的網(wǎng)絡(luò)連接: 攻擊者建立一個(gè)偽造的 Wi-Fi 熱點(diǎn),并誘騙用戶連接。當(dāng)用戶通過偽造的 Wi-Fi 熱點(diǎn)訪問網(wǎng)站時(shí),攻擊者可以竊取用戶發(fā)送到服務(wù)器的 Cookie、表單數(shù)據(jù)、登錄憑證等敏感信息。
利用 SSL/TLS 漏洞: 攻擊者利用 SSL/TLS 協(xié)議的漏洞,例如心臟出血漏洞、POODLE 漏洞等,解密用戶和服務(wù)器之間的通信內(nèi)容。。
防御措施:
為了防御中間人攻擊,開發(fā)人員可以采取以下措施:
使用 HTTPS 加密: 在服務(wù)器端和用戶瀏覽器之間使用 HTTPS 加密,可以防止攻擊者竊取或篡改傳輸數(shù)據(jù)。
使用公鑰密碼認(rèn)證: 使用公鑰密碼認(rèn)證可以確保通信雙方身份的真實(shí)性,防止攻擊者冒充服務(wù)器或用戶進(jìn)行攻擊。
安裝殺毒軟件和防火墻: 安裝殺毒軟件和防火墻可以幫助防御一些常見的中間人攻擊。
總結(jié)
到此這篇關(guān)于7種常見的前端攻擊的文章就介紹到這了,更多相關(guān)常見的前端攻擊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于JS實(shí)現(xiàn)PHP的sprintf函數(shù)實(shí)例
這篇文章主要介紹了基于JS實(shí)現(xiàn)PHP的sprintf函數(shù)的方法,可實(shí)現(xiàn)JavaScript模擬PHPsprintf函數(shù)的輸出功能,涉及JavaScript字符串操作的相關(guān)技巧,需要的朋友可以參考下2015-11-11360doc網(wǎng)站不登錄就無法復(fù)制內(nèi)容的解決方法
這篇文章主要介紹了360doc網(wǎng)站不登錄就無法復(fù)制內(nèi)容的解決方法,需要的朋友可以參考下2018-01-01微信小程序 調(diào)用微信授權(quán)窗口相關(guān)問題解決
這篇文章主要介紹了微信小程序 調(diào)用微信授權(quán)窗口相關(guān)問題解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07解決layui使用layui-icon出現(xiàn)默認(rèn)圖標(biāo)的問題
今天小編就為大家分享一篇解決layui使用layui-icon出現(xiàn)默認(rèn)圖標(biāo)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-09-09