我有一个应用程序,其行为类似于浏览器,并在android webview中显示结果。其中,一些结果是从我自己的服务器呈现的,并使用javascriptInterface对象调用Java方法。在WebviewClient shouldOverrideUrlLoading()方法中,我仅针对服务器的选择性URL添加了javascriptInterface,并针对剩余URL删除了javascriptInterface,如下所示: >
包含邪恶javascript的虚拟URL myevilpage.html也会与mypage1.html和mypage2.html一起加载。我已验证myevilpage.html javascript无法调用Java方法。这种方法可以确保使用javascriptInterface桥绑定除我特定的URL之外的其他任何URL吗?我已经引用了以下链接:http://www.rapid7.com/db/modules/exploit/android/browser/webview_addjavascriptinterface Android App using Webview/javascript. what can be security concern? Android JavascriptInterface Security?

最佳答案

这种方法可以确保使用javascriptInterface桥确保除我的特定网址以外的其他任何网址都无法绑定吗?


不。您使用的是contains()而不是equals(),因此攻击者可以轻易地制作恰好具有这些子字符串的URL。另外,在您确定该页面加载之前确定JS接口的可用性时,可能会出现计时问题,这意味着您将立即影响当前加载的页面。

URL检测仍然不会捕获其他可能的攻击(例如,代理服务器,这些页面通过广告网络或其他第三方来源提供的邪恶JS),尽管最多只能解决这些攻击。

07-24 09:47
查看更多