前端面試被問到網(wǎng)絡(luò)安全怎么辦?七種前端安全攻擊大解析!
Hello,大家好,我是 Sunday。
最近有個(gè)同學(xué)面試的時(shí)候被問到了特別多 網(wǎng)絡(luò)安全 相關(guān)的問題:
圖片
對(duì)于我們很多開發(fā)者來說,寫代碼一般都會(huì)只考慮業(yè)務(wù),對(duì)于安全方面的問題確實(shí)不會(huì)過多考慮。所以一旦面試被問到安全相關(guān)的問題,那么不知道如何回答了。
所以說,咱們今天這篇文章就專門來說一下:前端常見的安全攻擊方式、原理、以及如何防護(hù)!
01:跨站腳本攻擊(XSS)
跨站點(diǎn)腳本攻擊(XSS)是最常見的網(wǎng)絡(luò)共計(jì)之一。在 XSS 攻擊中,攻擊者將惡意客戶端腳本注入受信任的網(wǎng)站,然后在用戶的瀏覽器中執(zhí)行。
XSS 攻擊的原因是什么?
圖片
XSS 攻擊的主要原因之一是在將用戶生成的輸入呈現(xiàn)在頁面上。例如,攻擊者可能能夠使用 JavaScript 注入惡意代碼,并且該代碼可以在你的應(yīng)用呈現(xiàn) DOM 時(shí)執(zhí)行。
此惡意代碼最終可能會(huì)訪問并竊取 用戶Token、cookie 以及瀏覽器中存儲(chǔ)的其他敏感信息。
如何防止 XSS 攻擊?
防止 XSS 攻擊并不困難。
可以從三個(gè)部分進(jìn)行思考
- 確保驗(yàn)證和清理允許用戶在必要時(shí)插入數(shù)據(jù)和編碼輸出的表單、輸入字段。
- 實(shí)施內(nèi)容安全策略 (CSP) 以限制加載的資源和腳本。
- 使用 Vue 和 React 等框架,它們具有針對(duì)跨站點(diǎn)腳本攻擊的內(nèi)置預(yù)防機(jī)制。
02:SQL注入
SQL 注入是一種非常危險(xiǎn)的攻擊方式,并且已經(jīng)存在很長一段時(shí)間了。攻擊操縱數(shù)據(jù)庫查詢以獲得未經(jīng)授權(quán)的數(shù)據(jù)庫訪問,以執(zhí)行惡意活動(dòng),例如損壞數(shù)據(jù)庫或竊取敏感數(shù)據(jù)。
SQL注入的原理是什么?
圖片
簡而言之,SQL 注入讓攻擊者可以從前端執(zhí)行 SQL 查詢。這可能會(huì)導(dǎo)致破壞性操作,從而獲取你數(shù)據(jù)庫中的信息!
如何防止 SQL 注入?
防止 SQL 注入的策略分為兩部分:
- 首先,你需要確保前端輸入字段經(jīng)過正確驗(yàn)證和處理。防止用戶在輸入的字段中插入惡意代碼。
- 驗(yàn)證前端后,清理后端收到的數(shù)據(jù)也很重要。后端不要信任前端輸入的任何數(shù)據(jù),因?yàn)槿魏稳硕伎梢垣@取你的 API 端點(diǎn)并開始發(fā)送惡意輸入。因此,后端也需要進(jìn)行驗(yàn)證。此外,利用Burp Scanner 、 sqlmap、jSQL Injection和Invicti等工具來檢測應(yīng)用程序中潛在的 SQL 攻擊和相關(guān)漏洞。
03:跨站請(qǐng)求偽造(CSRF)
跨站點(diǎn)請(qǐng)求偽造 (CSRF) 是一種前端安全攻擊,它通過偽造的形式來執(zhí)行 你原本不希望執(zhí)行的操作。
跨站請(qǐng)求偽造的原理是什么?
圖片
通過偽裝的表單、鏈接或按鈕,用于更改用戶憑據(jù)、刪除或操縱敏感數(shù)據(jù)。
如何防止 跨站請(qǐng)求偽造(CSRF)
防止 CSRF 攻擊的最簡單方法之一是使用從服務(wù)器生成的 CSRF 令牌。你可以與客戶端共享這些令牌,以便后端可以在收到的每個(gè)請(qǐng)求中檢查令牌并驗(yàn)證其真實(shí)性。因此,如果客戶端無法提供準(zhǔn)確的令牌,你的服務(wù)器可以拒絕請(qǐng)求的操作。
此外,可以利用 .NET、Joomla、Spring (Spring Security) 和 Ruby on Rails 等框架的內(nèi)置 CSRF 支持來防止此類攻擊。
04:中間人攻擊
中間人 (MitM) 攻擊迫使攻擊者攔截和操縱在兩方之間傳輸?shù)男畔?/p>
中間人攻擊的原理是什么?
圖片
當(dāng)攻擊者利用不安全的通信通道(通常通過公共 WiFi)時(shí),就會(huì)發(fā)生這些攻擊。這種攻擊的受害者不會(huì)覺得自己受到了攻擊,因?yàn)樗麄冋J(rèn)為自己正在與服務(wù)器進(jìn)行完全正常且安全的對(duì)話,而他們共享的信息在此過程中遭到監(jiān)視或更改。
例如:你連接了一個(gè) wifi 原本請(qǐng)求 lgdsunday.club 的地址,但是卻被這個(gè) wifi 攔截代理(有點(diǎn)像 devServer 代理請(qǐng)求的感覺)
如何防止中間人攻擊
主要有三步:
- 使用安全的互聯(lián)網(wǎng)連接并注銷不再使用的應(yīng)用程序。
- 不要連接到你不知道的網(wǎng)絡(luò)。例如,不要連接到咖啡館提供的免費(fèi) WiFi。
- 使用 HTTPS 和 TLS 等安全通信協(xié)議對(duì)傳輸中的所有數(shù)據(jù)進(jìn)行加密。
05:點(diǎn)擊劫持
點(diǎn)擊劫持(又名 — UI 糾正攻擊)是一種欺騙機(jī)制,它會(huì)誘騙用戶點(diǎn)擊與他們認(rèn)為完全不同的內(nèi)容。
點(diǎn)擊劫持的原理是什么?
圖片
如圖所示,它將隱藏元素覆蓋在網(wǎng)站上合法可點(diǎn)擊組件的頂部。在這種情況下,用戶實(shí)際上點(diǎn)擊了一個(gè)無意的元素,這可能會(huì)在未經(jīng)他們同意的情況下觸發(fā)攻擊者的期望操作(比如轉(zhuǎn)賬)等意外操作。
如何防止點(diǎn)擊劫持
為了減輕點(diǎn)擊劫持攻擊的潛在風(fēng)險(xiǎn),可以使用的一種機(jī)制是使用X-Frame-Options標(biāo)頭
,它可以確保你的網(wǎng)站不會(huì)嵌入到其他網(wǎng)站或 IFrame 中。
06:安全配置錯(cuò)誤攻擊
應(yīng)用程序的安全配置錯(cuò)誤問題通常是由不正確的設(shè)置、默認(rèn)值和過時(shí)的配置引起的,這些問題可能導(dǎo)致攻擊者利用的漏洞進(jìn)行攻擊。
安全配置錯(cuò)誤攻擊的原理是什么?
圖片
例如,在某些情況下,啟用目錄列表可能會(huì)泄露敏感信息,密碼和密鑰不會(huì)更新并保留為默認(rèn)值,并且會(huì)暴露錯(cuò)誤處理信息。
如何防止安全配置錯(cuò)誤攻擊
- 始終確保更新使用的服務(wù)的默認(rèn)密鑰和密碼,并定期執(zhí)行配置審核。
- 定期檢查安全設(shè)置還可以幫助降低可能存在安全配置錯(cuò)誤或過時(shí)配置漏洞的風(fēng)險(xiǎn)。
- 對(duì)于具有不同憑據(jù)的類似配置的生產(chǎn)、開發(fā)和測試環(huán)境進(jìn)行自動(dòng)化構(gòu)建和部署流程。
07:依賴性利用
前端應(yīng)用程序由許多第三方庫組成,用于使開發(fā)人員的工作更加輕松。但開發(fā)人員普遍忽視的是,這些庫有時(shí)可能存在安全漏洞。
依賴性利用的原理是什么?
圖片
例如,xxxxx 這個(gè)依賴庫存在一個(gè)巨大的漏洞,允許攻擊者執(zhí)行遠(yuǎn)程代碼。因此,任何使用 xxxxx 的應(yīng)用程序都成為此攻擊的受害者。
我印象中有個(gè)庫之前出現(xiàn)過 主動(dòng)作惡 的情況,但是具體忘記是哪個(gè)庫了。有知道的小伙伴,可以給我發(fā)消息哈
如何防止依賴性利用
這個(gè)沒有太好的防范方式,只能是使用廣泛使用且維護(hù)得當(dāng)?shù)目煽壳医?jīng)過社區(qū)測試的庫。
除此之外,最好可以定期審核、依賴項(xiàng)更新和使用漏洞掃描工具進(jìn)行檢查。