整理 Self-XSS 的攻擊情境、前端權限邊界、後端驗證要求、使用者提示與事件回應。
Self-XSS 的本質
Self-XSS 不是傳統意義上由攻擊者注入網站的 XSS,而是誘導使用者自行打開瀏覽器開發者工具,將陌生指令貼進控制台執行。只要使用者當下已登入網站,這段指令就可能讀取頁面資料、呼叫前端可用功能、修改畫面或把使用者導向後續詐騙流程。
常見誘導場景
攻擊話術常包裝成領取獎勵、修復帳號、解除限制、查看隱藏資料、客服協助除錯或驗證身份。攻擊者會要求使用者不要重新整理、不要關閉視窗、不要中斷流程,目的就是避免使用者脫離情境後重新判斷。
不能把權限只放在前端判斷
前端可以協助改善體驗,但不能成為唯一權限防線。敏感操作例如付款、資料匯出、權限變更、信箱修改、API Token 產生與管理員功能,都必須由伺服器重新驗證身份與權限,不能只依賴按鈕是否顯示、欄位是否 disabled 或頁面是否隱藏。
前端提示要準確,不要製造干擾
管理後台、帳號安全頁與說明文件應明確寫出:官方不會要求使用者貼上控制台指令。提醒文字應簡短、固定且不干擾正常流程。若網站有管理員或高權限角色,可在後台加入可見警示,降低客服詐騙或假教學被照做的機率。
技術層的輔助防護
CSP、CSRF Token、SameSite Cookie、短效工作階段、重新驗證、操作紀錄與權限最小化,都是降低 Self-XSS 後續傷害的手段。即使使用者執行了陌生指令,系統仍應避免讓單一前端操作直接完成高風險變更。
已執行陌生指令後的處理
應立即登出所有裝置、變更密碼、撤銷第三方授權、檢查帳號安全設定與近期操作紀錄。若涉及管理員帳號,還應檢查 API Token、備援碼、信箱轉寄規則、付款設定與權限異動紀錄。
維護檢查清單
- 敏感動作是否由伺服器重新驗證
- 管理後台是否有明確控制台貼碼警示
- Cookie 是否使用 Secure、HttpOnly 與 SameSite
- 高風險操作是否需要重新驗證或二次確認
- 是否保留可追查的登入與操作紀錄