JavaScript 接口注入漏洞的修复

Remediation for JavaScript Interface Injection Vulnerability

我收到来自 Google Play 控制台的警告,将我引向 this page,因为我在我的应用程序中使用了 JavaScript 界面,并建议了两个选项来解决问题。

选项 1 告诉:

Ensure that there are no objects added to the JavaScript interface of any WebView that loads untrusted web content. You can do this in two ways:

Ensure that no objects are ever added to the JavaScript interface via calls to addJavascriptInterface.

Remove objects from the JavaScript interface in shouldInterceptRequest via removeJavascriptInterface before untrusted content is loaded by the WebView.

但我不明白 google 上特别说的是什么:

Remove objects from the JavaScript interface in shouldInterceptRequest via removeJavascriptInterface before untrusted content is loaded by the WebView

谁能告诉我更多的解释?

我遇到了同样的问题,也没能解决这个问题。 中记录的对我有用的方法是使用 WebView.evaluateJavascript。 las,这并不能完全替代 JavascriptInterface 的所有用例,但也许足以满足您的目的。

我只是发布了一个更新,没有做任何特别的事情,警告消失了,但不确定它是否会再次出现

您可以通过以下方式解决此问题:

  1. 如果您的网站支持 HTTPS,请在 loadUrl 方法中使用 "https://" 前缀。
  2. 您可以在您的清单中将 android:usesCleartextTraffic 设置为 false,或者设置一个不允许 HTTP 流量的网络安全配置。这也意味着您的网站应该 运行 在 HTTPS 上。

现在,关于“在 WebView 加载不受信任的内容之前,通过 removeJavascriptInterface 从 shouldInterceptRequest 中的 JavaScript 接口中删除对象”的问题:这意味着只要 WebView 中加载了任何非 HTTPS URL,您的应用程序就应该删除(或禁用)JavaScript接口。

完成上述任一操作后,您需要在 Play 管理中心更新 APK。

结论是,如果您想使用JavaScript接口,最好在您的网站上使用HTTPS。如果您使用 HTTP,JavaScript接口将不会被 Google Play 所允许。