我可以将Javascript代码注入Chrome自定义标签吗?

时间:2016-01-11 22:41:57

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

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

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

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

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

4 个答案:

答案 0 :(得分:27)

没有;这将是一个关键的安全漏洞。

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

答案 1 :(得分:6)

Chrome禁止您执行任何上述操作。如果允许这样做,则将是一个很大的安全问题,因为您可以在应用程序中修改页面。

假设您有一个具有Facebook登录的应用程序。您可以使用上述方法来窃取某人的登录信息。但是由于不允许注入javascript,因此我们无法做到这一点。

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

答案 2 :(得分:4)

您需要使用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完成,那将是一个安全漏洞

答案 3 :(得分:1)

应该无法将Javascript注入Chrome网络浏览器。 如果您可以通过某些第三方应用对chrome执行Javascript查询,则可以读取所有cookie,清除每个会话以及javascript的功能。这确实是一个巨大的安全漏洞

您可以做的是在网络视图中加载URL并在其中执行JavaScript。那是我所听说过的唯一可能。这是用于EPUB文档的技术,先将完整的HTML内容加载到webview中,然后在该视图中执行外部Javascript查询,以便您可以修改 HTML,CSS属性< / em>。