修復 JavaScript 介面植入安全漏洞

開發人員請注意,如果您的應用程式含有 JavaScript 介面植入安全漏洞,請詳閱本文資訊。

問題說明

請參閱 Play Console 的通知內容。Play Console 顯示的修正期限過後,Google Play 會將尚未修復安全漏洞的應用程式下架。

需採取行動​

  1. 登入 Play Console,然後前往「快訊」專區查看受影響的應用程式以及解決這些問題的期限。
  2. 更新受影響的應用程式並修復安全漏洞。
  3. 提交受影響應用程式的更新版本。

我們將再次審查您重新提交的應用程式,過程可能需要數小時。如果應用程式可以通過審查並成功發布,您就不必採取進一步行動。如果應用程式未能通過審查,就無法發布新的版本,而且您將收到電子郵件通知。

其他詳細資訊

WebView 會透過 addJavascriptInterface 向 JavaScript 程式碼提供應用程式層級物件並載入不受信任的網路內容,因此很容易遭到 JavaScript 介面植入攻擊。如果提供的物件使用了加上 @JavascriptInterface 註解的方法,不受信任的內容可能會執行這些方法而使資料外洩或損毀,甚至讓有心人士可任意執行程式碼。

建議您採用下列其中一種做法來防堵這個安全漏洞:

做法 1:確定 WebView 不會在 JavaScript 介面中加入物件

檢查是否有任何 WebView 載入不受信任的網路內容,並確認其 JavaScript 介面沒有加入物件。檢查方式有以下兩種:

 

檢查 JavaScript 介面中沒有任何透過 addJavascriptInterface 呼叫而加入的物件。

  1. 在 WebView 載入不受信任的內容前,於 shouldInterceptRequest 中透過 removeJavascriptInterface 移除 JavaScript 介面的物件。

做法 2:確定 WebView 不會載入不受信任的網路內容

如果您的應用程式需要向 WebView 的 JavaScript 介面提供物件,請確認 WebView 不會透過未加密的連線載入網路內容。您可以在 Manifest 中將 android:usesCleartextTraffic 設為 false,或是將 Network Security Config 設為不允許 HTTP 流量。您也可以防止任何受影響的 WebView 透過 loadUrl 載入使用 HTTP 配置的 URL。


防止有 JavaScript 介面的 WebView 載入從非信任來源取得且未經檢查的網址 (例如從不受信任的 Intent 取得的網址)。

我們很樂意提供協助

如有關於安全漏洞的技術問題,請前往 Stack Overflow 張貼問題並加上「android-security」標記。如需進一步瞭解這個問題的解決步驟,歡迎與開發人員支援小組聯絡。

這篇文章實用嗎?
我們應如何改進呢?