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

Ami*_*nha 17 javascript xss android malware webview

我正在创建一个使用WebviewJavascript制作的Android Web应用程序addJavascriptInterface(true).

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

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

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

Azu*_*pot 19

我在Syracuse大学找到了一个很好的研究,在Android系统中称为攻击WebView,它说明了如何使用WebViewwith addJavascriptInterface(true)可以实现两种攻击.一,来自恶意网站,通过您分配给界面的电话服务(例如,联系人,相机等)或两个恶意网站即可访问您的应用,恶意应用可以通过插入代码访问易受攻击的网站它的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);
Run Code Online (Sandbox Code Playgroud)

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


Dur*_*n.H 15

当您为其启用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或更高版本上运行时,您的网页无法访问该方法.

参考