android – 如何解决“JavaScript接口注入漏洞的修复”?
作者:互联网
谷歌要求我在我的Android应用程序中解决https://support.google.com/faqs/answer/9095419,这基本上意味着不对通过HTTP加载的网页使用JavaScript注入机制.
不使用此机制(选项1)对我不起作用.将android:usesCleartextTraffic设置为false也不起作用,因为该应用程序在其他地方使用非HTTPS流量.因此,“我可以确保任何受影响的WebView都不会通过loadUrl加载任何带有HTTP方案的URL” – 我很乐意这样做,因为我的应用程序只使用file:/// URL将内容加载到WebView中,安全性应该很好.但是我如何编写shouldOverrideUrlLoading方法的代码,以便Google的检查程序识别出我只使用file:/// URL?
请注意,问题不同于Remediation for JavaScript Interface Injection Vulnerability(因为我清楚要问的是什么)和In Android, JavaScript Interface Injection Vulnerability(因为我没有使用HTTP,而是文件:/// URL).
编辑:添加我的shouldOverrideUrlLoading方法. (这不是整个方法,而是它的重要部分.)
@Override
public boolean shouldOverrideUrlLoading (WebView browser, String url) {
if (url.startsWith("file:///")) {
// This is my web site, so do not override; let my WebView load the page
browser.loadUrl(url);
return true;
}
// Otherwise, the link is not for a page on my site, or is an entirely different kind of URI
// (like tel:, geo: or mailto:), so launch another Activity that handles URLs
act.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}
解决方法:
我还没有找到一种方法来使用file:// URL和资产,以满足Google代码检查器的方式.虽然这可以解决问题,但我仍然不清楚如何编写代码.
我最终做的 – 解决我的直接问题 – 是通过WebView.evaluateJavascript方法调用JavaScript方法.从WebViewClient.onPageFinished中调用时,页面已完成加载,因此可以访问所有元素.虽然对我的情况不重要,但此方法也可以返回Java代码的值.因此,虽然它不是JavascriptInterface的一般替代品,但它解决了一些用例.
标签:android,android-webview,android-security 来源: https://codeday.me/bug/20191009/1876316.html