【问题标题】:Remediation for JavaScript Interface Injection VulnerabilityJavaScript 接口注入漏洞修复
【发布时间】:2019-05-09 19:34:50
【问题描述】:

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

选项 1 告诉:

确保没有对象添加到 加载不受信任的 Web 内容的任何 WebView。您可以分两次执行此操作 方式:

确保没有对象被添加到 JavaScript 界面 通过调用 addJavascriptInterface。

在 shouldInterceptRequest 中从 JavaScript 接口中移除对象 在加载不受信任的内容之前通过 removeJavascriptInterface 网络视图。

但我不明白 google 到底说了什么:

在 shouldInterceptRequest 中从 JavaScript 接口中移除对象 在加载不受信任的内容之前通过 removeJavascriptInterface 网络视图

谁能告诉我更多的解释?

【问题讨论】:

  • 我相信它的意思是您应该在访问 http 站点(而不是 https 站点)之前删除您添加的所有内容。或者更好的是,根本不使用任何注射剂。
  • 如果谷歌不允许我们使用注入,那么为什么存在这种方法?!
  • 请注意,它表示“用于不受信任的网络内容”。如果这用于受信任的内容,那么该方法仍然有用。这就是该方法存在的原因。
  • 是的,它表示“用于不受信任的网络内容”,但谷歌将如何发现我将其用于 ssl 网站或不受信任的网站?

标签: android webview android-webview google-play-console


【解决方案1】:

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

  1. 如果您的网站支持 HTTPS,请在 loadUrl 方法中使用“https://”前缀。
  2. 您可以在 Manifest 中将 android:usesCleartextTraffic 设置为 false 或设置网络安全配置以禁止 HTTP 流量。这也意味着您的网站应该在 HTTPS 上运行。

现在,关于“在 WebView 加载不受信任的内容之前,通过 removeJavascriptInterface 从 JavaScript 界面中删除对象,删除对象”:这意味着您的应用应该删除(或禁用)JavaScriptInterface每当在 WebView 中加载任何非 HTTPS URL 时。

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

结论是,如果你想使用 JavaScriptInterface,最好在你的网站上使用 HTTPS。如果您使用 HTTP,Google Play 将不允许 JavaScriptInterface。

【讨论】:

    【解决方案2】:

    我也遇到了同样的问题,但也无法弄清楚。 How to address "Remediation for JavaScript Interface Injection Vulnerability"? 中记录的对我有用的是使用 WebView.evaluateJavascript。唉,这并不能完全替代 JavascriptInterface 的所有用例,但也许它足以满足您的目的。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 我希望在我的回答中解释了您的担忧,这可能会有所帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 2023-03-10
      • 2011-06-10
      相关资源
      最近更新 更多