瀏覽器安全問題

1. XSS攻擊

概念

XSS 攻擊指的是跨站腳本攻擊,是一種代碼注入攻擊。攻擊者通過在網站注入惡意腳本,使之在用戶的瀏覽器上運行,從而盜取用戶的信息如 cookie 等
XSS本質是因為網站沒有對惡意代碼進行過濾,與正常代碼混合在一起了,瀏覽器沒發區分那些腳步是否可信,從而導致惡意代碼的執行。

攻擊者可以通過這種攻擊方式進行以下操作:

  1. 獲取頁面的數據,如DOM、cookie、localstorage;
  2. DOS攻擊,發送合理請求,暫用服務器資源,從而使用戶無法訪問服務器;
  3. 破壞頁面結構
  4. 流量劫持(將鏈接指向某個網站)
攻擊類型

xss攻擊可以分為存儲型、反射型和DOM型

  1. 存儲型指的是惡意腳本會存儲在目標服務器上,當瀏覽器請求數據時,腳本從服務器傳回并執行
  2. 反射型指的是攻擊者誘導用戶訪問一個惡意代碼URL后,服務器端接收數據處理,然后把惡意代碼的數據發送到瀏覽器端,瀏覽器端解析這段帶有XSS代碼的數據后當腳本執行,最終完成xss攻擊;
  3. DOM型指的通過修改頁面的DOM節點行程xss;
存儲型 XSS 的攻擊步驟:
  1. 攻擊者將惡意的代碼提交到目標網站的數據中;
  2. 用戶打開目標網站時,?站服務端將惡意代碼從數據庫取出,拼接在 HTML 中返回給瀏覽器
  3. ?站服務端將惡意代碼從數據庫取出,拼接在 HTML 中返回給瀏覽器
  4. 惡意代碼竊取?戶數據并發送到攻擊者的?站,或者冒充?戶的?為,調??標?站接?執?攻擊者指定的操作。

這種攻擊常?于帶有?戶保存數據的?站功能,如論壇發帖、商品評論、?戶私信等

反射型 XSS 的攻擊步驟:
  1. 攻擊者構造出特殊的 URL,其中包含惡意代碼;
  2. ?戶打開帶有惡意代碼的 URL 時,?站服務端將惡意代碼從 URL 中取出,拼接在 HTML 中返回給瀏覽器;
  3. 用戶瀏覽器接收到響應后解析執?,混在其中的惡意代碼也被執?;
  4. 惡意代碼竊取?戶數據并發送到攻擊者的?站,或者冒充?戶的?為,調??標?站接?執?攻擊者指定的操作;

反射型 XSS 跟存儲型 XSS 的區別是:存儲型 XSS 的惡意代碼存在數據庫?,反射型 XSS 的惡意代碼存在 URL ?。
反射型 XSS 漏洞常?于通過 URL 傳遞參數的功能,如?站搜索、跳轉等。 由于需要?戶主動打開惡意的 URL 才能?效,攻擊者往往會結合多種?段誘導?戶點擊。

DOM 型 XSS 的攻擊步驟:
  1. 攻擊者構造出特殊的 URL,其中包含惡意代碼;
  2. ?戶打開帶有惡意代碼的 URL;
  3. ?戶瀏覽器接收到響應后解析執?,前端 JavaScript 取出 URL 中的惡意代碼并執?;
  4. 惡意代碼竊取?戶數據并發送到攻擊者的?站,或者冒充?戶的?為,調??標?站接?執?攻擊者指定的操作;

DOM 型 XSS 跟前兩種 XSS 的區別:DOM 型 XSS 攻擊中,取出和執?惡意代碼由瀏覽器端完成,屬于前端JavaScript ?身的安全漏洞,?其他兩種 XSS 都屬于服務端的安全漏洞。

如何防御XSS攻擊

  1. 輸入驗證和清理?:確保對用戶輸入的數據進行合法性驗證和轉義處理。
  2. 實施內容安全策略(CSP)?:限制加載的資源和腳本。
CSP概念
  1. CSP 指的是內容安全策略,它的本質是建立一個白名單,告訴瀏覽器哪些外部資源可以加載和執行。我們只需要配置規則,如何攔截由瀏覽器自己來實現。
  2. 通常有兩種方式來開啟 CSP,一種是設置 HTTP 首部中的 Content-Security-Policy,一種是設置 meta 標簽的方式

對一些敏感信息進行保護,比如 cookie 使用 http-only,使得腳本無法獲取。也可以使用驗證碼,避免腳本偽裝成用戶執行一些操作。

2. CSRF攻擊

CSRF 攻擊指的是跨站請求偽造攻擊,攻擊者誘導用戶進入一個第三方網站,然后該網站向被攻擊網站發送跨站請求。如果用戶在被攻擊網站中保存了登錄狀態,那么攻擊者就可以利用這個登錄狀態,繞過后臺的用戶驗證,冒充用戶向服務器執行一些操作。

CSRF 攻擊的本質是利用 cookie 會在同源請求中攜帶發送給服務器的特點,以此來實現用戶的冒充。

攻擊類型

  1. GET類型的CSRF攻擊,比如在網站中一個img標簽里構建一個請求,當用戶打開這個網站的時候就會自動發起提交;
  2. POST類型的CSRF攻擊,比如構建一個表單,然后隱藏它,當用戶進入頁面,自動提交這個表單;
  3. 鏈接類型的CSRF攻擊,比如在a標簽的href屬性構造一個請求,然后誘導用戶去點擊

如何防御CSRF攻擊

  1. 進行同源檢測:服務器根據 http 請求頭中 origin 或者 referer 信息來判斷請求是否為允許訪問的站點,從而對請求進行過濾。
  2. ?使用CSRF令牌?:在每個請求中包含一個唯一的令牌,服務器驗證該令牌的有效性;
  3. 設置HTTP頭部?:如X-Frame-Options、X-Content-Type-Options等,增強瀏覽器的安全策略?;

3. SQL注入

SQL注入是一種通過操縱數據庫查詢來獲取未經授權的數據庫訪問的攻擊方式。攻擊者可以通過前端輸入插入惡意代碼,如果后端沒有進行適當的驗證和處理,可能會導致敏感數據被竊取或破壞

如何防御SQL注入

  1. 輸入驗證:確保前端輸入字段經過正確驗證和處理
  2. 后端驗證:后端不要信任前端輸入的數據,進行二次驗證
  3. 使用安全檢測工具;如Burp Scanener、sqlmap等工具來檢測潛在的SQL注入漏洞

4.中間人攻擊

中間人攻擊是指攻擊者與通訊的兩端分別創建獨立的聯系,并交換其所收到的數據,使通訊的兩端認為他們正在通過一個私密的連接與對方直接對話,但實際上整個會話都被攻擊者完全控制,在中間人攻擊中,攻擊者可以攔截通訊雙方的通話并插入新的內容

攻擊過程

  1. 客戶端發送請求到服務端,請求被中間人攔截;
  2. 服務端向客戶端發送公鑰;
  3. 中間人截獲公鑰,保留在自己手上,然后自己生成一個偽造的公鑰,發送給客戶端;
  4. 客戶端接收到偽造的公鑰后,生成加密hash值發給服務器;
  5. 中間人獲得加密hash值,用自己的私鑰解密獲得真密鑰,同時生成假的hash值,發送服務器;
  6. 服務器用私鑰解密獲得假密鑰,然后加密數據傳輸給客戶端;

如何防御中間人攻擊

  1. 加密通信:使用加密技術可以有效地防止中間人攻擊。在傳輸數據時使用加密算法,確保數據在傳輸過程中不被竊聽或篡改;
  2. 身份驗證:在進行任何通信之前,要求用戶進行身份驗證,列如使用電子郵件地址或密碼進行驗證。這可以增加攻擊者的難度,因為攻擊者需要設法繞過身份驗證過程;
  3. 限制訪問:限制對敏感數據的訪問,可以防止未經授權人的訪問數據。列如,在服務器上設置訪問的控制列表,只允許授權用戶可以訪問敏感數據;
  4. 監控系統:安裝監控系統并定期監視網絡流量,可以發現中間人攻擊并采取適當的措施。這可以幫助及時采取行動,防止攻擊者篡改通信內容;

5. 網絡劫持

網絡劫持分為兩種

DNS劫持

輸入京東被強制跳轉淘寶這屬于dns劫持

  1. DNS強制解析:通過修改運營商的本地DNS記錄,來引導用戶流量緩存到服務器
  2. 302的跳轉方式:通過監控網絡出口的流量,分析判斷那些內容是可以進行劫持的,在對劫持內容發起302跳轉的回復,引導用戶獲取內容

HTTP劫持

訪問谷歌但是一直有其它的游戲廣告彈出,由于http明文傳輸,運營商會修改你的http響應內容(即加廣告)

DNS劫持由于涉嫌違法,已經被監管起來,現在很少有DNS劫持,而http劫持依然非常盛行,最有效的辦法就是全站HTTPS,將HTTP加密這使得運營商無法獲取明文,就無法劫持你的響應內容;

6. 那些可能引起前端安全問題

  1. 跨站腳本攻擊(xss):一種代碼注入方式,為了與css區分所以被稱作xss,早期常?于?絡論壇, 起因是?站沒有對?戶的輸?進?嚴格的限制, 使得攻擊者可以將腳本上傳到帖?讓其他?瀏覽到有惡意腳本的??, 其注??式很簡單包括但不限于JavaScript / CSS / Flash 等;
  2. iframe的濫用:iframe中的內容是由第三?來提供的,默認情況下他們不受控制,他們可以在iframe中運?JavaScirpt腳本、Flash插件、彈出對話框等等,這可能會破壞前端?戶體驗;
  3. 跨站點請求偽造(csrf):指攻擊者通過設置好的陷阱,強制對已完成認證的?戶進??預期的個?信息或設定信息等某些狀態更新,屬于被動攻擊;
  4. 惡意第三?庫: ?論是后端服務器應?還是前端應?開發,絕?多數時候都是在借助開發框架和各種類庫進?快速開發,?旦第三?庫被植?惡意代碼很容易引起安全問題;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897470.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897470.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897470.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spring(五)容器-依賴注入的三種方式

目錄 總結:通用的三種注入方式 1 字段注入 2 構造器注入 3 set注入 總結:通用的三種注入方式 優先使用構造器注入謹慎使用 Setter 注入避免濫用字段注入 通過構造器傳入依賴,確保對象創建時即完成初始化。通過 Setter 方法注入依賴&#x…

Python貝殼網二手小區數據爬取(2025年3月更)

文章目錄 一、代碼整體架構解析二、各部分代碼詳解1. main()主函數解析2. 會話初始化(偽裝瀏覽器身份)3. 動態參數生成(反爬蟲核心機制)4. 列表頁抓取(獲取小區列表)5. 列表頁解析(提取小區信息…

使用服務器搭建一個專屬的密碼管理工具Vaultwarden

一、服務器配置與Docker環境 ?實例選型與系統準備? ?推薦配置?:?1核2GB內存?(萊卡云L1型實例),Vaultwarden資源占用低,適合輕量級部署?34。?操作系統?:選擇 ?Ubuntu 22.04 LTS?,兼容…

安孚科技攜手政府產業基金、高能時代發力固態電池,開辟南孚電池發展新賽道

安孚科技出手,發力固態電池。 3月7日晚間,安孚科技(603031.SH)發布公告稱,公司控股子公司南孚電池擬與南平市綠色產業投資基金有限公司(下稱“南平綠色產業基金”)、高能時代(廣東橫…

IO學習---->線程

1.創建兩個線程&#xff0c;分支線程1拷貝文件的前一部分&#xff0c;分支線程2拷貝文件的后一部分 #include <head.h> sem_t sem; long half_size 0; // 全局變量&#xff0c;供所有線程共享void* product(void *arg) {FILE *src fopen("IO.text", "…

深度學習分詞器char-level實戰詳解

一、三種分詞器基本介紹 word-level&#xff1a;將文本按照空格或者標點分割成單詞&#xff0c;但是詞典大小太大 subword-level&#xff1a;詞根分詞&#xff08;主流&#xff09; char-level&#xff1a;將文本按照字母級別分割成token 二、charlevel代碼 導包&#xff1…

基于SpringBoot實現旅游酒店平臺功能六

一、前言介紹&#xff1a; 1.1 項目摘要 隨著社會的快速發展和人民生活水平的不斷提高&#xff0c;旅游已經成為人們休閑娛樂的重要方式之一。人們越來越注重生活的品質和精神文化的追求&#xff0c;旅游需求呈現出爆發式增長。這種增長不僅體現在旅游人數的增加上&#xff0…

git規范提交之commitizen conventional-changelog-cli 安裝

一、引言 使用規范的提交信息可以讓項目更加模塊化、易于維護和理解&#xff0c;同時也便于自動化工具&#xff08;如發布工具或 Changelog 生成器&#xff09;解析和處理提交記錄。 通過編寫符合規范的提交消息&#xff0c;可以讓團隊和協作者更好地理解項目的變更歷史和版本…

前端實現版本更新自動檢測?

&#x1f916; 作者簡介&#xff1a;水煮白菜王&#xff0c;一位資深前端勸退師 &#x1f47b; &#x1f440; 文章專欄&#xff1a; 前端專欄 &#xff0c;記錄一下平時在博客寫作中&#xff0c;總結出的一些開發技巧和知識歸納總結?。 感謝支持&#x1f495;&#x1f495;&a…

硬件基礎(4):(5)設置ADC電壓采集中MCU的參考電壓

Vref 引腳通常是 MCU (特別是帶有 ADC 的微控制器) 上用來提供或接收基準電壓的引腳&#xff0c;ADC 會以該基準電壓作為量程參考對輸入模擬信號進行數字化轉換。具體來說&#xff1a; 命名方式 在不同廠家的 MCU 中&#xff0c;Vref 引腳可能會被標記為 VREF / VREF- / VREF_…

postman接口請求中的 Raw是什么

前言 在現代的網絡開發中&#xff0c;API 的使用已經成為數據交換的核心方式之一。然而&#xff0c;在與 API 打交道時&#xff0c;關于如何發送請求體&#xff08;body&#xff09;內容類型的問題常常困擾著開發者們&#xff0c;尤其是“raw”和“json”這兩個術語之間的區別…

為什么要使用前綴索引,以及建立前綴索引:sql示例

背景&#xff1a; 你想啊&#xff0c;數據庫里有些字段&#xff0c;它老長了&#xff0c;就像那種 varchar(255) 的字段&#xff0c;這玩意兒要是整個字段都拿來建索引&#xff0c;那可太占地方了。打個比方&#xff0c;這就好比你要在一個超級大的筆記本上記東西&#xff0c;每…

【語料數據爬蟲】Python爬蟲|批量采集會議紀要數據(1)

前言 本文是該專欄的第2篇,后面會持續分享Python爬蟲采集各種語料數據的的干貨知識,值得關注。 在本文中,筆者將主要來介紹基于Python,來實現批量采集“會議紀要”數據。同時,本文也是采集“會議紀要”數據系列的第1篇。 采集相關數據的具體細節部分以及詳細思路邏輯,筆…

Android 線程池實戰指南:高效管理多線程任務

在 Android 開發中&#xff0c;線程池的使用非常重要&#xff0c;尤其是在需要處理大量異步任務時。線程池可以有效地管理線程資源&#xff0c;避免頻繁創建和銷毀線程帶來的性能開銷。以下是線程池的使用方法和最佳實踐。 1. 線程池的基本使用 &#xff08;1&#xff09;創建線…

SQL29 計算用戶的平均次日留存率

SQL29 計算用戶的平均次日留存率 計算用戶的平均次日留存率_牛客題霸_牛客網 題目&#xff1a;現在運營想要查看用戶在某天刷題后第二天還會再來刷題的留存率。 示例&#xff1a;question_practice_detail -- 輸入&#xff1a; DROP TABLE IF EXISTS question_practice_detai…

深度學習分類回歸(衣帽數據集)

一、步驟 1 加載數據集fashion_minst 2 搭建class NeuralNetwork模型 3 設置損失函數&#xff0c;優化器 4 編寫評估函數 5 編寫訓練函數 6 開始訓練 7 繪制損失&#xff0c;準確率曲線 二、代碼 導包&#xff0c;打印版本號&#xff1a; import matplotlib as mpl im…

【leetcode hot 100 19】刪除鏈表的第N個節點

解法一&#xff1a;將ListNode放入ArrayList中&#xff0c;要刪除的元素為num list.size()-n。如果num 0則將頭節點刪除&#xff1b;否則利用num-1個元素的next刪除第num個元素。 /*** Definition for singly-linked list.* public class ListNode {* int val;* Lis…

【iOS逆向與安全】sms短信轉發插件與上傳服務器開發

一、目標 一步步分析并編寫一個短信自動轉發的deb插件 二、工具 mac系統已越獄iOS設備:脫殼及frida調試IDA Pro:靜態分析測試設備:iphone6s-ios14.1.1三、步驟 1、守護進程 ? 守護進程(daemon)是一類在后臺運行的特殊進程,用于執行特定的系統任務。例如:推送服務、人…

Midjourney繪圖參數詳解:從基礎到高級的全面指南

引言 Midjourney作為當前最受歡迎的AI繪圖工具之一&#xff0c;其強大的參數系統為用戶提供了豐富的創作可能性。本文將深入解析Midjourney的各項參數&#xff0c;幫助開發者更好地掌握這一工具&#xff0c;提升創作效率和質量。 一、基本參數配置 1. 圖像比例調整 使用--ar…

音頻進階學習十九——逆系統(簡單進行回聲消除)

文章目錄 前言一、可逆系統1.定義2.解卷積3.逆系統恢復原始信號過程4.逆系統與原系統的零極點關系 二、使用逆系統去除回聲獲取原信號的頻譜原系統和逆系統幅頻響應和相頻響應使用逆系統恢復原始信號整體代碼如下 總結 前言 在上一篇音頻進階學習十八——幅頻響應相同系統、全…