繁体   English   中英

使用Webview / javascript的Android应用程序。什么可以是安全问题?

[英]Android App using Webview/javascript. what can be security concern?

我正在使用WebviewJavascript创建一个Android web应用程序,使addJavascriptInterface(true)

我的应用程序将内容将从外部站点加载的数据(html)。

当我启用addJavascriptInterface(true)时,我担心我的应用程序的跨站点脚本XSS /安全性

我应该注意哪些事情,以便任何恶意代码不应该在我的应用程序上运行?

我在Syracuse大学找到了一个很好的研究, 在Android系统中称为攻击WebView ,它说明了如何使用带有addJavascriptInterface(true)WebView可以实现两种攻击。 一,来自恶意网站,现在可以通过您分配给界面的电话服务(例如,联系人,相机等)或两个访问您的应用程序,恶意应用程序可以通过插入代码访问易受攻击的网站它的Javascript。

基本上,应用程序开发人员的修复是确保在WebView ,不允许在WebView中查看除此之外的其他URL。 例如,假设您将Facebook.com嵌入到WebView ,您可以编写代码以确保在点击Facebook中的任何其他广告时,外部浏览器将打开而不是在WebView中显示。 这在iFrames中最为常见......尽管文章对此有更深入的了解。

以下是他们提供的示例,它确保在WebView查看的其他URL不是最初预期的:

WebViewclient wvclient = New WebViewClient() {
  // override the "shouldOverrideUrlLoading" hook.
  public boolean shouldOverrideUrlLoading(WebView view,String url){
    if(!url.startsWith("http://www.facebook.com")){
    Intent i = new Intent("android,intent.action.VIEW",
    Uri.parse(url));
    startActivity(i);
  }
}
// override the "onPageFinished" hook.
public void onPageFinished(WebView view, String url) { ...}
}
webView.setWebViewClient(wvclient);

这是一项伟大的研究,并概述了几种不同的攻击方式。 值得一读!

当您为其启用javascript时,webview中存在早于4.2的漏洞。

使用启用Javascript:

启用JavaScript后,您可以在应用程序代码和JavaScript代码之间创建接口。

addJavascriptInterface(Object object,String name)方法:

addJavascriptInterface方法将提供的Java对象注入WebView。

使用提供的名称将对象注入到主框架的JavaScript上下文中,这允许从JavaScript访问Java对象的方法。

对于运行Android 4.1或更早版本的应用程序,可以访问所有公共方法(包括继承的方法),因此当用户使用addJavascriptInterface方法安装的应用程序加载外部网页时,它可以使用WebView和javascript来调用java对象(如'Javascript'管道'和使用反射来调用任何其他未注册的Java类),允许攻击者调用Android的Java方法。

修复:

对于运行Android 4.2的应用程序,可以从JavaScript访问所有使用JavascriptInterface注释的公共方法。

因此,如果您为SDK版本17或更高版本开发应用程序,则必须将@JavascriptInterface注释添加到您希望JavaScript可用的任何方法。

如果您未提供注释,则在Android 4.2或更高版本上运行时,您的网页无法访问该方法。

参考

我写了这个要点,以帮助锁定Android的Webview,类似于@Noni A的答案,它只允许通过覆盖shouldOverrideUrlLoading加载白名单网址,但也shouldInterceptRequest我认为是AJAX类型调用使用的shouldInterceptRequest

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM