淺談 XSS (Cross-Site Scripting) 攻擊
何謂 XSS (Cross-Site Scripting) 攻擊?
XSS,全稱為 Cross-Site Scripting(跨網站指令碼),是一種攻擊者透過植入的惡意腳本來攻擊使用者瀏覽器的攻擊手法。攻擊者會藉由各種手段將惡意腳本注入網頁,當受害者訪問這些網頁時,惡意腳本就會在使用者的瀏覽器中被執行。
由於這種 XSS 攻擊的惡意程式碼試運行在受害者的瀏覽器環境上,因此,用更專業的詞彙來說,Cross-site scripting 是一種用戶端程式碼插入攻擊。
XSS攻擊之所以被稱為 "跨站腳本" 攻擊,其核心在於它巧妙地利用了網站對用戶輸入的信任機制,從而繞過瀏覽器的同源政策。這種攻擊的獨特之處在於:
- 信任的濫用:雖然惡意腳本可能源自外部,但因為它是通過受信任的用戶 "代理" 提交的,所以在網站看來,這個腳本仍然是來自 "可信來源"。
- 繞過防禦:這種方式巧妙地規避了同源政策的限制。因為從網站的角度來看,這個腳本是在它自己的域內執行的,而非來自外部網站。
XSS攻擊可能造成的損害
因為在 Web 的世界中 JavaScript 幾乎可以做到任何事,所以 XSS 的攻擊能做到的事情也是五花八門。舉例來說:
- 竊取使用者資料:攻擊者可以獲取受害者的 cookie、session tokens,進一步竊取帳號控制權。
- 偽造使用者行為:攻擊者可以在使用者的瀏覽器中執行惡意行為,例如偽造表單提交、假冒使用者發表留言或按讚。
- 植入惡意程式碼:攻擊者甚至可以在網站中植入更多的惡意程式碼,擴大攻擊影響。
- 執行社交工程攻擊:攻擊者可以利用被感染的網頁顯示虛假的登錄頁面或其他欺騙性內容,誘導使用者提供更多敏感信息。
XSS 的類性
XSS 攻擊主要可以分為三種類型:反射型 XSS、儲存型 XSS 以及 DOM 型 XSS。每種類型的攻擊都有其特點和方式,以下我們會詳細解釋攻擊者如何注入惡意腳本以及這些腳本是如何被執行的。