【问题标题】:Can I inject Javascript code into Chrome Custom Tabs我可以将 Javascript 代码注入 Chrome 自定义选项卡吗
【发布时间】:2016-01-11 22:41:56
【问题描述】:

在我的应用程序中,我目前正在使用 Web 视图来显示一些内容。然后,我使用 Javascript 注入为用户快速填写表单。

唯一的问题是,与 Chrome 自定义选项卡相比,Webview 的速度非常慢。是否可以将 Javascript 代码注入这些自定义选项卡?

例如,这是我目前使用的一些代码:

myWebView.loadUrl("javascript:document.getElementById('join_first_name').value='" + name + "';void(0); ");

【问题讨论】:

  • chrome tabs/app 不是我们自己控制的
  • 能够在应用程序中控制加载到 Chrome 中的任何网页将是一个相当大的安全漏洞

标签: javascript android android-webview chrome-custom-tabs


【解决方案1】:

没有;这将是一个严重的安全漏洞。

由于自定义标签使用来自用户真实 Chrome 实例的 cookie、设置和密码管理器,因此您根本无法控制它们。

【讨论】:

    【解决方案2】:

    Chrome 禁止您执行任何此类操作。如果允许这样做,那么这将是一个重大的安全漏洞,因为您可以在应用程序中修改页面。

    假设你有一个应用程序,它有一个 facebook 登录。如果可能的话,也可以窃取某人的登录凭据。

    使用 Chrome 自定义标签,您无法控制所提供的内容。您可能应该尝试另一种方法,例如将名字作为 URL 参数传递,然后在该页面上编写脚本来读取参数并填写表单。

    【讨论】:

      【解决方案3】:

      你需要这样做,使用data:text/html,作为你脚本的前缀

      在您的浏览器标签中尝试一下

      data:text/html,<script>alert("hello")</script>
      

      它会触发 javascript 和 alert ,你也可以从 url 打印一些 html

      所以我猜你只需要用脚本打开标签

       String suffix = "data:text/html,"
       String script = "<script>document.getElementById('join_first_name').value='" + name + "';</script>"
       String url = suffix + script
       myWebView.loadUrl(url);
      

      这是desktopmobile 中的浏览器行为

      我还没有在WebView.loadUrl 中尝试过,实际上如果它是由WebView.loadUrl 完成的,那将是一个安全漏洞

      【讨论】:

        【解决方案4】:

        应该没有办法将Javascript 注入 Chrome 网络浏览器。 如果您可以通过一些第三方应用程序对 chrome 执行 Javascript 查询,那么您可以读取所有 cookie、清除每个会话以及 javascript 能够执行的任何操作。这确实是一个巨大的安全漏洞

        您可以做的是在 webview 中加载您的 URL 并在那里执行 javascripts。这是我听说过的唯一可能。这与 EPUB 文档使用的技术相同,我们在 webview 中加载完整的 HTML 内容,然后我们在该视图中执行外部 Javascript 查询,因此您可以修改 HTML、CSS 属性

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-22
          • 2010-10-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多