iT邦幫忙

2026 iThome 鐵人賽

DAY 14
0

如昨天說的一樣,今天就是XSS的最後一部份,接下來會進到path traversal

XSS漏洞原理

不管是reflected XSS, DOM based XSS還是Stored XSS基本上都是因為資料進入到前端時沒有做好處理,讓放入到前端的時候被誤認成要執行的腳本,從而被攻擊成功,所以防護方面主要聚焦在進入前端的資料處理方面,同時再加幾道額外防禦

XSS防護方法

跳脫(Escaping)

由於前端輸出是被突破的關鍵點,所以我們當然要先從這裡下手了,既然瀏覽器看到<script></script>就會把它認成腳本,那我們就嘗試把它轉換成文字的樣子,一般來說會使用HTML實體編碼(HTML Entities),這樣在處理的時候瀏覽器就會把他視為純文字,從而安全的進行處理並渲染
< = &lt
> = &gt
& = &amp
" = &quot
' = &#x27
/ = &#x2F

HttpOnly

之前在XSS範例的時候也看到了,滲透者可以使用腳本獲得受害者的document.cookie,也就是cookie的信息,所以我們要在cookie上面加一個HttpOnly屬性,讓cookie被鎖住不讓JavaScript腳本讀取,降低滲透者攻擊成功時的傷害

DOM操作安全

DOM based XSS的部分除了讓輸出時做跳脫,也要注意不能使用不安全的寫法,如在寫純文字內容時不該使用innerHTML這種不安全的寫法,可以改成使用textContent

設定CSP

除了以上這些,也要架設CSP作為最後防線,使用HTTP Header限制網站前端只能載入並執行受信任的腳本來源,讓網頁看到網頁設計者白名單外的腳本輸入時自動拒絕

明日內容:Path traversal


上一篇
[DAY13]仿生人是否會夢見網頁山羊?--DOM-Based XSS以及Stored XSS
下一篇
[仿生人是否會夢見網頁山羊?]--Path Traversal
系列文
仿生人是否會夢見網頁山羊? 資安小白的30天Webgoat闖關紀錄 共 18 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言