WEB安全篇:瀏覽器攻擊原理及防護

1、XSS:跨站腳本攻擊

就是攻擊者想盡一切辦法將可以執行的代碼注入到網頁中。攻擊者在web頁面惡意插入HTML或script標簽,當用戶瀏覽該頁面時,惡意代碼就會被執行,從而達到攻擊的目的。XSS利用的是用戶對指定網站的信任

比如:攻擊者在qq中發送一個看似安全的鏈接,騙取用戶點擊之后,竊取cookie中的用戶私密信息;或者攻擊者在論壇中加一個惡意表單,當用戶提交表單的時候,卻把信息傳送到攻擊者的服務器中,而不是用戶原本以為信任的站點。

1.類型
  • 反射型(非持久 服務端):攻擊者事先制作好攻擊鏈接,需要欺騙用戶自己去點擊鏈接才能觸發XSS代碼,所謂反射型XSS就是將惡意用戶輸入的js腳本,反射到瀏覽器執行。
  • 儲存型(持久型 服務端):會把攻擊者的數據儲存到服務端,攻擊行為將伴隨攻擊數據一直存在,每當用戶訪問該頁面就會觸發代碼執行。
  • DOM型(瀏覽器端):基于文檔對象模型的漏洞。取出和執行惡意代碼由瀏覽器端完成,屬于前端 JavaScript 自身的安全漏洞,而其他兩種 XSS 都屬于服務端的安全漏洞。
2.危害

盜取網頁瀏覽中的cookie值,盜用cookie實現無密碼登錄,盜取用戶信息。

劫持訪問,實現惡意跳轉。

配合CSRF攻擊完成惡意請求。

3.防御方法
  • 標簽過濾,如<script>、<img>、<a>標簽等
  • 對數據進行嚴格的輸出編碼,對字符< 、>、&、" 、' 、+、/等進行轉義。
  • 開啟瀏覽器XSS防御:Http Only cookie,禁止 JavaScript 讀取某些敏感 Cookie,攻擊者完成 XSS 注入后也無法竊取此 Cookie。
  • 純前端渲染,明確innerText、setAttribute、style,將代碼與數據分隔開。
  • 避免拼接HTML;Vue/React 技術棧,避免使用 v-html / dangerouslySetInnerHTML
  • 盡量采用post而非get提交表單

2、CSRF:跨站請求偽造

攻擊者誘導受害者進入第三方網站,在第三方網站中,向被攻擊網站發送跨站請求。利用受害者在被攻擊網站已經獲取的注冊憑證,繞過后臺的用戶驗證,達到冒充用戶對被攻擊的網站執行某項操作的目的。(通過偽造連接請求,在用戶不知情的情況下,讓用戶以自己的身份來完成非本意操作的攻擊方法。CSRF利用的是網站對瀏覽器的信任。)

攻擊類型
  • i)GET型:如在頁面的某個 img 中發起一個 get 請求
  • ii)POST型:通過自動提交表單到惡意網站
  • iii)鏈接型:需要誘導用戶點擊鏈接
預防方案:

CSRF通常從第三方網站發起,被攻擊的網站無法防止攻擊發生,只能通過增強自己網站針對CSRF的防護能力來提升安全性。)

  • 驗證碼:對敏感操作加入驗證碼,強制用戶與網站進行交互
  • 對Cookie設置SameSite屬性。該屬性表示Cookie不隨著跨域請求發送,可以很大程度減少CSRF的攻擊,但是該屬性目前并不是所有瀏覽器都兼容。
  • 使用POST請求,避免使用GET,降低攻擊風險,post請求攻擊方需要構造一個form表單才可以發起請求,比get請求(img的src,a標簽的href等等)的攻擊方式復雜了一些,相對來說能降低風險,但不能阻止。
  • 只允許GET請求檢索數據,但是不允許它修改服務器上的任何數據
  • 檢查HTTP中的referer字段,該字段記錄了HTTP請求的來源地址
  • 可以在 HTTP 請求中以參數的形式加入一個隨機產生的 token,并在服務器端建立一個攔截器來驗證這個 token,如果請求中沒有 token 或者 token 內容不正確,則認為可能是 CSRF 攻擊而拒絕該請求。
  • 在http中自定義屬性并驗證。
  • 為頁面增加隨機數

當用戶訪問站點時,該站點應該生成一個(密碼上很強壯的)偽隨機值,并在用戶的計算機上將其設為cookie。站點應該要求每個表單都包含該偽隨機 值(作為表單值和cookie值)。當一個POST請求被發給站點時,只有表單值和cookie值相同時,該請求才會被認為是有效的。

.XSS與CSRF有什么區別嗎?

XSS是獲取信息,不需要提前知道其他用戶頁面的代碼和數據包。CSRF是代替用戶完成指定的動作,需要知道其他用戶頁面的代碼和數據包。

要完成一次CSRF攻擊,受害者必須依次完成兩個步驟:

登錄受信任網站A,并在本地生成cookie。

在不登出A的情況下,訪問危險網站B。

3、點擊挾持

ClickJacking點擊劫持

當訪問某網站時,利用CSS將攻擊者實際想讓你點擊的頁面進行透明化隱藏,然后在頁面后顯示 一些東西誘導讓你點擊,點擊后則會在用戶毫不知情的情況下做了某些操作,這就是點擊劫持ClickJacking。
案例:當我們點擊彈窗右上角的"X"想關閉彈窗事,跳轉到其他頁面。

iframe覆蓋

第三方網站通過iframe內嵌某一個網站,并且將iframe設置為透明不可見,將其覆蓋在其他經過偽裝的DOM上,偽裝的可點擊DOM(按鈕等)與實際內嵌網站的可點擊DOM位置相同,當用戶點擊偽裝的DOM時,實際上點擊的是iframe中內嵌的網頁的DOM從而觸發請求操作。

以下是幾種預防點擊劫持的方法:

1.X-Frame-Options HTTP 響應頭

可以使用 X-Frame-Options 響應頭,限制特定頁面在 iframe 中打開。可以使用以下響應頭:

SAMEORIGIN:允許頁面在相同域名下的任何 iframe 中打開。

DENY:不允許頁面在任何 iframe 中打開。

ALLOW-FROM uri:允許頁面在指定來源的 iframe 中打開。

2.JavaScript 防御腳本

可以使用 JavaScript 腳本來防止 iframe 的釣魚攻擊。該方法的實現原理是檢查當前的頁面是否在頂層窗口中運行,或者在特定的 frame 中運行。

3.CSP(Content-Security-Policy)

CSP 是一種響應頭,通過指定允許在頁面中運行的可信源列表來限制頁面使用的內容和資源。通過配置CSP,可以防止惡意攻擊者插入惡意腳本的能力。不過在實際實現中,需要進行不少工作,包括了解承載應用程序的網絡拓撲,掌握應用程序的功能,了解如何針對現有攻擊使用 CSP。

4.HTML5 中添加 Sandox 屬性

在 HTML5 中,可以通過添加Sandox屬性來設置同源策略。該屬性防止 iframe 中的內容訪問父窗口的 Cookies、localStorage 和其他數據,從而防止攻擊者訪問受害者的會話 ID 以及其他敏感信息。

4、URL漏洞跳轉

定義:借助未驗證的URL跳轉,將應用程序引導到不安全的第三方區域,從而導致的安全問題。

原理:黑客構建惡意鏈接(鏈接需要進行偽裝,盡可能迷惑),發在QQ群或者是瀏覽量多的貼吧/論壇中。安全意識低的用戶點擊后,經過服務器或者瀏覽器解析后,跳到惡意的網站中。

繞過URL跳轉限制:

1.利用?號繞過限制

2.利用反斜杠和正斜杠繞過限制

3.利用@繞過URL限制

4.利用#號繞過

5、SQL注入

SQL注入是一種常見的Web安全漏洞,攻擊者利用這個漏洞,可以訪問或修改數據,或者利用潛在的數據庫漏洞進行攻擊。

就是通過把sql命令插入到web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。

web 應用程序對用戶輸入的數據合法性沒有過濾或者是判斷,前端傳入的參數是攻擊者可以控制,并且參數帶入數據庫的查詢,攻擊者可以通過構造惡意的 sql 語句來實現對數據庫的任意操作。

預防 SQL 注入的方法如下:

  1. 參數化查詢:使用預處理語句或參數化查詢來避免 SQL 注入。
  2. 驗證用戶輸入:驗證用戶輸入的數據,確保其符合預期格式,避免非法字符等。
  3. 轉義特殊字符:在使用用戶輸入的數據構造 SQL 語句時,對特殊字符進行轉義,以防止注入。
  4. 限制權限:限制用戶的權限,使其不能執行不安全的 SQL 操作。
  5. 白名單驗證:白名單驗證是指確保用戶輸入的數據只能是允許的值,避免非法數據的輸入。
  6. 審核代碼:定期審核代碼,以確保代碼的安全性,特別是對于數據庫連接和查詢部分的代碼。

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

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

相關文章

匯編語言學習2---GNU Debugger (GDB)

學習記錄&#xff0c;在匯編語言 &#xff0c;我們面對的是機器碼&#xff08;以匯編指令形式展現&#xff09;&#xff0c;所以斷點要設置在機器碼被加載到內存中的位置。 GEF插件使用 安裝插件wget -O ~/.gdbinit-gef.py -q https://gef.blah.cat/pyecho source ~/.gdbinit-g…

談談架構的內容

一、架構的定義架構是一個界定不清的東西&#xff0c;我們很難講清楚哪些東西是架構&#xff0c;哪些東西不是架構。但軟件行業里其實人人都在搞架構&#xff0c;軟件設計就是架構本身。架構這個詞出現得很早&#xff0c;有些人認為是 NASA&#xff08;也可能是NATO&#xff09…

C#文件(夾)讀取相關(完善中。。。)

前言閱讀項目編輯器的代碼時&#xff0c;發現好多與文件&#xff08;夾&#xff09;路徑相關代碼。本來自己之前對路徑相關的東西就模模糊糊&#xff0c;希望通過這篇筆記能讓自己模糊的地方明朗一下。" / " 與 " \ "你是否有過這樣的疑惑&#xff1a;Wind…

FPGA DP1.4 With DSC解決方案

引言&#xff1a;迎接高清高刷時代的顯示挑戰隨著8K分辨率、高刷新率、HDR和更廣色域內容的普及&#xff0c;傳統視頻接口的帶寬正面臨極限。DisplayPort 1.4標準雖提供了高達32.4 Gbps的帶寬&#xff08;HBR3速率&#xff09;&#xff0c;但要無壓縮地傳輸8K60Hz 10bpp HDR視頻…

新手向:Python開發簡易網絡服務器

Python網絡服務器開發指南&#xff1a;從零開始的完整實現網絡服務器基礎概念網絡服務器是互聯網基礎設施的核心組件&#xff0c;它本質上是一個持續運行的程序&#xff0c;負責監聽特定端口&#xff08;如HTTP服務的80端口或HTTPS的443端口&#xff09;&#xff0c;處理來自客…

819 機器學習-決策樹2

一、決策樹的算法信息增益&#xff1a;某個屬性帶來的熵增1、決策樹三大經典算法? ID3 → 信息增益 信息增益&#xff1a;某個屬性帶來的熵增? C4.5 → 信息增益率 信息增益率&#xff1a;信息增益自身熵? CART → 基尼指數&#xff08;分類&#xff09;&#xff1b;平方誤…

Objective-C 版本的 LiveEventBus 效果

想要 Objective-C 版本的 LiveEventBus 效果&#xff08;跨頁面/跨模塊通信&#xff0c;支持粘性和非粘性事件&#xff09;。在 iOS 里對應的就是 NSNotificationCenter&#xff0c;但是它 默認不支持粘性事件&#xff0c;所以如果你想要“粘性”&#xff0c;需要自己封裝一層。…

WindowsAPI|每天了解幾個winAPI接口之網絡配置相關文檔Iphlpapi.h詳細分析七

上一篇&#xff1a;WindowsAPI|每天了解幾個winAPI接口之網絡配置相關文檔Iphlpapi.h詳細分析六 如果有錯誤歡迎指正批評&#xff0c;在此只作為科普和參考。 C:\Program Files (x86)\Windows Kits\10\Include\10.0.22621.0\um\iphlpapi.h 文章目錄CreateIpNetEntry&#xff1…

STM32F407VGT6從零建立一個標準庫工程模板+VSCode或Keil5

一、前言 下載平臺:STM32F407ZGT6 代碼使用平臺:VSCode 編譯器:arm-none-aebi-gcc ---- 默認你已經安裝 程序下載工具:STlink ---- 默認你擁有 批處理工具:make ---- 默認你已經安裝 使用此方法可以不借助其它插件&#xff0c;例如:STM32EIDE。這個方法已經經過驗證可以在STM3…

佩京VR黨建工作站-黨建VR系統-VR黨建展廳

VR黨建工作站是一種依托VR虛擬現實技術的數字化黨建文化學習工具。它通過將豐富的學習內容植入到智慧黨建科技產品中&#xff0c;構建出沉浸式的學習場景&#xff0c;從而創新了體驗式學習模式&#xff0c;促進了黨員的自主學習。VR黨建工作站核心功能&#xff1a;1、了解實時新…

Kotlin 協程之Channel的概念和基本使用

前言 在 專欄 之前的文章中&#xff0c;我們已經知道了協程的啟動、掛起、取消、異常以及常用的協程作用域等基礎應用。 這些基礎應用適合的場景是一次性任務&#xff0c;執行完就結束了的場景。 launch / async 適合的場景 網絡請求數據庫查詢文件讀寫并行計算任務等等 而…

安裝使用Conda

文章目錄Linux安裝 Conda&#xff08;Miniconda 或 Anaconda&#xff09;?Miniconda (輕量版)激活配置Windows安裝配置 Conda?添加清華鏡像源加速創建并激活 Conda 環境驗證步驟?安裝項目依賴運行項目Linux安裝 Conda&#xff08;Miniconda 或 Anaconda&#xff09;? Mini…

面向智能空戰的深度強化學習技術綜述

CSDN大禮包《大模型課程》 CSDN大禮包《深度強化學習課程》 CSDN大禮包《人工智能平臺設計開發課程》

DeepSeek-V3.1 Claude Code: 革命性的AI編碼助手詳解與應用指南

DeepSeek-V3.1 & Claude Code: 革命性的AI編碼助手詳解與應用指南 今天 DeepSeek模型已支持接入 Claude Code&#xff0c;我們來深入探討Claude Code ——Anthropic 推出的一個強大工具。它不僅僅是一個簡單的代碼補全助手&#xff0c;而是一個嵌入終端的智能代理&#xf…

智能求職推薦系統

智能求職推薦系統 基于知識圖譜和大語言模型的智能求職推薦系統&#xff0c;為求職者提供個性化崗位推薦和AI驅動的匹配分析。 &#x1f680; 系統特性 智能推薦: 基于知識圖譜的多維度職位匹配AI分析: 集成DeepSeek大模型提供深度分析和建議可視化展示: 使用ECharts展示推薦結…

瑞芯微:AIoT芯片領航者的全棧突圍與生態崛起

一、業績高速增長的底層邏輯??瑞芯微的持續爆發式增長源于三大關鍵支柱&#xff1a;技術縱深??&#xff1a;深耕“大音頻、大視頻、大感知、大軟件”四大核心技術矩陣&#xff0c;自研NPU/ISP/編解碼等核心IP持續迭代&#xff1b;精準定位??&#xff1a;瞄準邊緣側與端側…

【報錯】Please do not run this script with sudo bash

目錄 報錯 分析 解決方法 擴展 報錯分析 安裝conda 報錯 Please do not run this script with sudo bash: showHelp: command not found 分析 腳本有以下要求: 不能以root身份運行(當前是root用戶)

多線程—飛機大戰排行榜功能(2.0版本)

&#xff08;一&#xff09;實現功能&#xff1a; 1.基礎的成績排序 2.相同成績隨機排名 3.用戶名注冊重復 &#xff08;二&#xff09;效果視頻&#xff1a; &#xff08;三&#xff09;代碼實現&#xff1a; 3.1 && 3.2 在FileRead類中新增方法如下:具體的代碼實現&a…

React + Antd+TS 動態表單容器組件技術解析與實現

概述在現代前端應用中&#xff0c;表單是用戶交互的核心部分。本文將深入分析一個基于 React 和 Ant Design 的高級動態表單容器組件&#xff0c;它提供了強大的可配置性、靈活的布局選項和豐富的功能擴展能力。組件核心特性1. 高度可配置的表單結構interface FormContainerPro…

51c自動駕駛~合集16

自己的原文哦~ https://blog.51cto.com/whaosoft/11739891 #CLIP系列模型如何補短板再升級 CLIP&#xff08;Contrastive Language–Image Pre-training&#xff09;模型自推出以來&#xff0c;在圖像-文本跨模態理解和生成領域取得了顯著成果。然而&#xff0c;經…