iT邦幫忙

2026 iThome 鐵人賽

DAY 8
0
Security

嘗試使用OWASP ZAP與DVWA探索常見 Web 漏洞系列 第 8

DVWA 實作:Reflected XSS原理與攻防

  • 分享至 

  • xImage
  •  
  • 什麼是 XSS?
    XSS漏洞發生在Web應用程式接收使用者輸入的資料後,未經過適當的過濾或 HTML 轉義(Encoding),就直接將內容渲染回網頁上。這使得攻擊者可以在網頁中注入惡意的JavaScript程式碼。當其他使用者瀏覽該頁面時,瀏覽器就會自動執行這段惡意程式碼。

XSS 主要分為三大類:
1.Reflected XSS(反射型):惡意程式碼藏在URL或請求中,伺服器接收後立刻「反射」回傳給瀏覽器執行。

2.Stored XSS(儲存型):惡意程式碼被存入資料庫,每個造訪該頁面的使用者都會受害。

3.DOM-based XSS:完全在前端JavaScript處理DOM物件時發生的漏洞。

  • DVWA 實作步驟(Low 安全等級)
    進入 DVWA 左側選單 XSS (Reflected)。
    https://ithelp.ithome.com.tw/upload/images/20260922/20179312nYU1U2qQWn.png

1.正常功能測試
輸入:Alice
結果:頁面顯示Hello Alice。
https://ithelp.ithome.com.tw/upload/images/20260922/201793124cdIzq7PZU.png

2.構造XSS攻擊
輸入:alert('XSS')
結果:瀏覽器立刻跳出顯示XSS的警告彈窗。並且點擊彈窗上的「確定」後,頁面留下紅色的Hello,代表 標籤已被瀏覽器成功解析並執行。
https://ithelp.ithome.com.tw/upload/images/20260922/20179312JsakVRgohg.png

https://ithelp.ithome.com.tw/upload/images/20260922/20179312EnmXFL0vXg.png

  • 漏洞成因分析
    在Low安全等級下,後端的PHP程式碼如下:

if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) {
echo 'Hello ' . $_GET[ 'name' ] . '';
}

程式碼直接將傳入的name參數拼接到HTML中輸出,完全沒有呼叫如htmlspecialchars() 等轉義函式。因此輸入的 標籤會原封不動地送回前端,被瀏覽器誤以為是正常的HTML程式碼而執行。

  • 如何防禦 XSS?
    1.HTML實體轉義:
    在將使用者輸入輸出到HTML之前,將特殊字元進行轉義

2.使用HTTP-only Cookie:
將敏感的Session Cookie設定為HttpOnly,防止攻擊者透過document.cookie竊取Cookie。

3.實施內容安全策略:
透過HTTP Header限制網頁可以執行的腳本來源,禁止執行未授權的內聯腳本。


上一篇
DVWA 實作:SQL Injection(SQL 注入)原理、探測與攻防
系列文
嘗試使用OWASP ZAP與DVWA探索常見 Web 漏洞8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言