dcloudio / uni-app

A cross-platform framework using Vue.js
https://uniapp.dcloud.io
Apache License 2.0
40.09k stars 3.63k forks source link

离线webview被检测出webview跨域访问漏洞 #2658

Closed lmf closed 3 years ago

lmf commented 3 years ago

问题描述 扫描反编译后的代码文件,发现存在WebView跨域访问漏洞。 第1处: 文件: io.dcloud.feature.weex.adapter.webview.DCWXWebView.java 代码: .method private initWebView(Landroid/webkit/WebView;)V invoke-virtual {v0, v1}, Landroid/webkit/WebSettings;->setAllowFileAccessFromFileURLs(Z)V

  1. 若file域访问为非功能需求时,手动配置setAllowFileAccessFromFileURLs或setAllowUniversalAccessFromFileURLs两个API为false。(Android4.1版本之前这两个API默认是true,需要显式设置为false)
    1. 若需要开启file域访问,则设置file路径的白名单,严格控制file域的访问范围,具体如下: 1) 固定不变的HTML文件可以放在assets或res目录下,file:///android_asset和file:///android_res 在不开启API的情况下也可以访问。 2) 可能会更新的HTML文件放在/data/data/(app) 目录下,避免被第三方替换或修改。 3) 对file域请求做白名单限制时,需要对“../../”特殊情况进行处理,避免白名单被绕过。
    2. 避免App内部的WebView被不信任的第三方调用。排查内置WebView的Activity是否被导出、必须导出的Activity是否会通过参数传递调起内置的WebView等。

这个需要怎么修复?

aiplat commented 3 years ago

有被攻击的例子?

lmf commented 3 years ago

没有被攻击,但app做备案时候过不了

ArrayDC commented 3 years ago
  1. uni-app在App端最低支持Android4.4,所以不存在此问题
  2. file域名访问的问题,因为uni-app中vue页面虽然使用webview渲染,实际上指示使用file访问了一个本地模板html文件,如果没有使用webview组件实际上就不会存在file域名访问的情况。 虽然存在相关原生代码,但实际上应用没有使用到相关功能就不会用到,安全检测工具实际上做的静态代码分析,实际结果是不准确的,建议使用加固工具加固后再做检测。