2015-07-21 30 views
1

对于我的android应用程序,我使用webview呈现我的网站,并且我创建了一个javscriptinterface对象来与应用程序和网站进行通信。我想让其他用户把iframe放到我的网站中,但是我想这些iframe是否可以访问我的JS接口对象?我的网站内的iframe可以访问webview-js桥对象吗?

如果可能的话如何解决这个安全问题?

回答

0

是 - WebView中的所有JavaScript都可以访问相同的JavaScript接口,无论它来自哪个服务器,因为它在本地执行。

您可以通过在本地网络上的不同端口上运行两个Python SimpleHTTPServer实例来测试它们:它们被认为是不同的主机(例如XMLHttpRequest会导致交叉源请求错误),但仍可以调用方法即使你的iframe来自不同的主机,Javascript也是如此。

到目前为止,我还没有能够找到一种方法来规避这种情况。 Android docs建议“只将addJavaScriptInterface()暴露给应用程序APK中包含的JavaScript”,但没有提及如何实现此目的。由于Java对象被传递给Javascript,并且所有的Javascript都是在WebView的上下文中执行的,我猜想这是由WebView/WebViewProvider的Android实现来提供这样一种方法,但是Marshmallow的就Java框架而言,addJavascriptInterface()是空的(请参阅WebView.javaWebViewProvider.java)。它没有use to be,所以也许这就是安全文档的来源。

相关问题