谷歌要求我在我的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 – 如何解决“JavaScript接口注入漏洞的修复”?全部内容,希望文章能够帮你解决android – 如何解决“JavaScript接口注入漏洞的修复”?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)