Chrome 開發人員工具如何協助防範自我 XSS 攻擊

Wolfgang Beyer
Wolfgang Beyer

什麼是自體 XSS 攻擊?

自體 XSS (或稱自體跨網站指令碼) 是一種社交工程攻擊,會誘騙使用者在網路瀏覽器中執行惡意程式碼。與一般XSS 攻擊不同,後者會利用網頁應用程式中的安全漏洞,讓攻擊者注入惡意程式碼,而自體 XSS 攻擊則會利用您可能執行的程式碼動作。

自毀式 XSS 攻擊通常會讓攻擊者誘騙您將惡意程式碼複製並貼到瀏覽器的開發人員工具控制台中。攻擊者通常會透過承諾某種獎勵來達成這一點。可能原因如下:

  • 聲稱代碼可讓你存取隱藏功能或虛擬獎勵。
  • 假裝程式碼是安全性測試或錯誤修正。
  • 聲稱程式碼可讓您入侵網站,以便牟利。

執行程式碼後,攻擊者就能取得帳戶控制權。這可能會讓駭客:

  • 竊取你的個人資訊,例如姓名、地址和信用卡號碼。
  • 代表你發布未經授權的訊息或留言。
  • 掌控社群媒體帳戶。
  • 將惡意軟體散播給其他使用者。

Chrome 開發人員工具如何嘗試減輕自體 XSS 攻擊?

讓使用者將程式碼貼到 DevTools 並執行,本質上就存在風險。但這也是 Chrome 開發人員工具的核心功能之一。因此,我們必須在減輕潛在的自我 XSS 攻擊與不干擾只想對網站進行偵錯的開發人員工作之間取得平衡。

開發人員通常不會先快速查看程式碼的功能,就複製網路上的程式碼,然後貼到 DevTools 並執行。大多數開發人員都很清楚,在網路上隨機找到的程式碼執行起來可能會帶來安全風險。

Chrome 開發人員工具相信開發人員會瞭解自己的操作。我們不希望在使用者複製及貼上程式碼時,讓他們的作業速度變慢或分心。

我們認為,非開發人員遭受自體 XSS 攻擊的風險更高。為了保護你,我們認為在你執行可能危險的動作時中斷你的操作是合理且有益的做法。Chrome 開發人員工具偵測到經驗不足的使用者嘗試將程式碼貼到開發人員工具時,會停止並顯示警告。

開發人員工具何時會顯示自體 XSS 警告?

DevTools 會使用非常簡單的啟發法來決定是否顯示自體 XSS 警告:這會根據使用者設定檔的控制台記錄。

如果您的設定檔在控制台記錄中至少有 5 個項目,DevTools 就不會顯示任何警告或彈出式視窗。控制台記錄是您在控制台中輸入並執行的指令清單。將游標放在「控制台」並重複按向上鍵時,就會看到這些指令。

自體 XSS 警告看起來會是什麼樣子?

當經驗不足的使用者嘗試將程式碼貼到控制台時,這項操作會遭到封鎖,控制台會改為顯示警告。

主控台中的自體 XSS 警告。

您可以覆寫這則警告並啟用貼上功能,但必須輸入「allow pasting」才能執行這項操作。

當經驗不足的使用者將程式碼貼到 DevTools 程式碼編輯器 (例如「Sources」面板) 時,使用者體驗會非常相似。您會看到模式對話方塊,而非警告。

「來源」面板中的自體 XSS 模式對話方塊。

再次提醒您,關閉這個對話方塊並不足以啟用貼上功能。如要覆寫警告,請在輸入欄位中輸入「allow pasting」。

這是一次性設定嗎?

是的,一旦允許貼上內容,就不會再收到自訂 XSS 警告。

我們希望這項功能在實用性和不便性之間取得良好平衡。增加阻力可提高您閱讀警告的機率,進而降低自導 XSS 攻擊成功的機率。

Chrome 開發人員工具會保留一個標記,用來指定是否要在 Chrome 設定檔中顯示自體 XSS 警告。因此,如果您建立新的設定檔,並立即開始將程式碼貼到 DevTools 中,系統會封鎖貼上動作,並顯示自體 XSS 警告。

您可以為測試自動化功能停用這項功能嗎?

那自動化測試呢?許多測試工具會為每次測試建立新的臨時設定檔。因此,如果您使用開發人員工具來偵錯自動化測試,系統一開始會封鎖將內容貼到控制台的動作。

如要解決這個問題,請執行下列任一操作:

  • 使用 Chrome for Testing,這是一系列專為測試和自動化設計的 Chrome 版本。已關閉自我 XSS 警告。

  • 如為其他 Chrome 發布版本,請將 --unsafely-disable-devtools-self-xss-warnings 命令列標記傳遞至 Chrome,即可完全停用自訂 xss 警告對話方塊。

結論

您對這項用於減輕自毀 XSS 攻擊的策略有什麼看法?如有任何意見或建議,請在這個錯誤中新增留言,或透過下列任一方式與我們聯絡。

特別是如果你正在處理的網站會透過資訊主頁記錄警告自體 XSS 攻擊,我們很樂意討論如何調整我們的努力方向,或評估自體 XSS 緩解措施的影響。

下載預覽管道

建議您將 Chrome Canary開發人員版Beta 版設為預設開發人員版瀏覽器。這些預覽管道可讓您存取最新的 DevTools 功能,測試最新的網路平台 API,並在使用者發現問題前,協助您找出網站的問題!

與 Chrome 開發人員工具團隊聯絡

請使用下列選項討論新功能、更新或任何與開發人員工具相關的內容。