25

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

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

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

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

4 回答 4

32

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

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

于 2016-01-11T22:44:17.157 回答
9

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

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

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

于 2019-03-19T05:06:07.860 回答
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,它将是一个安全漏洞

于 2019-03-20T12:59:58.153 回答
1

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

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

于 2019-03-21T17:23:54.173 回答