在Android API Level 16以及之前的版本存在远程代码执行安全漏洞。
漏洞产生的原因:
JS调用Android的其中一个方式是通过addJavascriptInterface接口进行对象映射的。
webView.addJavascriptInterface(new DemoJavaScriptInterface (),"andorid");
final class DemoJavaScriptInterface {
DemoJavaScriptInterface()
@JavascriptInterface
public void share(){}
}
}
第一个参数:Android的本地对象
第二个参数:JS的对象
通过对象映射将Android中的本地对象和JS中的对象进行关联,从而实现JS调用Android的对象和方法
当JS拿到Android这个对象后,就可以调用这个Android对象中所有的方法,包括系统类(java.lang.Runtime类),从而进行任意代码执行。
解决办法:
Google在Android4.2版本中规定对被调用的函数已@JavascriptInterface进行注解从而避免漏洞攻击