What is Cross-site scripting (XSS) ?
跨站腳本攻擊(Cross-Site Scripting,簡稱XSS)是一種網站應用程序中常見的安全漏洞,
允許攻擊者將惡意代碼注入到網頁上,並在用戶瀏覽頁面時執行這些程式碼。
XSS 攻擊的目標是盜取用戶的敏感資訊、繞過訪問控制或者破壞網站的正常運作。
有三種主要的 XSS 攻擊類型:
儲存型(Stored XSS): 攻擊者將惡意代碼存儲在網站上,當其他用戶訪問包含這些惡意代碼的頁面時,就會觸發攻擊。
反射型(Reflected XSS): 攻擊者通常通過傳遞特殊的 URL 參數,將惡意代碼注入到頁面上,頁面在用戶訪問時即時執行該代碼。
DOM-based XSS: 攻擊者利用 DOM(Document Object Model)的漏洞,在客戶端修改網頁的 DOM 結構,進而執行惡意代碼。
假設有一個簡單的搜尋功能,URL 看起來像這樣:
1 | https://example.com/search?q=<user_input> |
使用者可以在 <user_input>
的位置輸入搜尋內容。
如果這個輸入沒有得到正確的過濾或處理,攻擊者可以輸入以下內容:
1 | https://example.com/search?q=<script>alert('XSS')</script> |
當其他用戶訪問這個 URL 時,頁面可能會執行包含在 <script>
標籤中的 JavaScript 程式碼,
這裡舉例一個簡單的 alert,但攻擊者也可以進一步執行更危險的操作,如竊取用戶 cookie、模擬用戶操作等。
防範XSS攻擊的方法包括:
輸入驗證: 對用戶輸入進行嚴格的驗證,過濾或拒絕包含惡意代碼的輸入。
輸出過濾: 在輸出數據到瀏覽器之前,對數據進行適當的過濾和轉義,以確保任何潛在的HTML標籤都被視為純文本。
使用HTTP Only Cookie: 將 cookie 標記為 HTTP Only,這樣他們就無法通過 JavaScript 訪問,減少被竊取的風險。