WebView暴露JavaScript接口后如何防范XSS攻击?
我在开发Android混合应用时,通过WebView的addJavascriptInterface暴露了一个本地方法,但测试时发现可以通过XSS注入执行任意JS。尝试过设置webView.getSettings().setJavaScriptEnabled(true)和setMixedContentMode(NEVER),但没用。代码是这样的:
webView.addJavascriptInterface(new JsBridge(), "AndroidBridge");
webView.setWebViewClient(new WebViewClient() {
@Override
public void onReceivedError(WebView view, WebResourceError error) {
super.onReceivedError(view, error);
}
});
现在输入框里的内容直接传给eval执行,发现恶意输入能调用AndroidBridge的方法。除了给参数做转义,还有哪些安全措施能彻底防止这种攻击?
顺便,设置
setDomStorageEnabled(false)和setAllowFileAccess(false)也能减少风险。懒得逐个检查就用WebView的X5内核替代原生实现。