中核工建设集团有限公司网站,网站空间域名申请网站,互联网保险的弊端,芜湖市公司网站建设哪家好目录 摘要
一、WebView 简介
二、WebView 对外暴露
WebView 对外暴露的接口风险
三、通用型 XSS - Universal XSS 介绍
四、WebView 跨域访问
五、与本地代码交互 js
5.1接口暴露风险#xff1a;
5.2漏洞利用#xff1a;
5.3JavaScript 与 Native 代码通信
六、Chr…目录 摘要
一、WebView 简介
二、WebView 对外暴露
WebView 对外暴露的接口风险
三、通用型 XSS - Universal XSS 介绍
四、WebView 跨域访问
五、与本地代码交互 js
5.1接口暴露风险
5.2漏洞利用
5.3JavaScript 与 Native 代码通信
六、Chrome 开发者工具可信根证书
七纵深防御体系构建
7.1. WebView基础加固
7.2. 跨域访问控制矩阵
7.3. 安全交互协议设计
7.4. 证书安全增强
总结 摘要
在移动互联网飞速发展的当下移动 Web 安全的重要性愈发凸显。《白帽子讲 Web 安全》对移动 Web 安全进行了详细阐述为我们揭开了这一领域的神秘面纱。
一、WebView 简介
WebView 是移动端如 Android、iOS用于嵌入网页的核心显示网页内容的组件允许开发者在原生应用中嵌入网页实现混合应用开发允许应用内直接加载 Web 内容。其本质是一个轻量级浏览器但默认安全配置较弱容易成为攻击入口。
在 Android 系统中WebView 基于 Chromium 内核能加载并渲染 HTML、CSS 和 JavaScript 代码。
例如许多新闻类应用通过 WebView 加载网页形式的新闻详情电商应用利用 WebView 展示商品介绍页面等。它为开发者提供了便捷的方式将 Web 技术与原生应用相结合丰富应用功能和用户体验。
二、WebView 对外暴露
WebView 对外暴露的接口风险
WebView 对外暴露存在诸多安全隐患。由于 WebView 可以执行 JavaScript 代码若应用对 WebView 的使用缺乏严格管控恶意代码可能会利用 WebView 的漏洞进行攻击。 JavaScript 接口暴露开发者可能通过 addJavascriptInterface 方法将本地 Java 对象暴露给 WebView 中的 JavaScript 代码。若未严格过滤输入攻击者可利用反射机制调用敏感系统 API如发送短信、读取文件。 案例
1.某应用通过 WebView 调用 getUserInfo() 接口时未校验调用来源导致恶意网页可窃取用户数据。
2.攻击者可能通过构造恶意网页在 WebView 加载该网页时利用 JavaScript 代码获取应用内的敏感信息如用户登录凭证、个人资料等。此外若 WebView 被配置为允许执行任意来源的 JavaScript攻击者还可能通过注入恶意脚本控制 WebView 的行为进而对整个应用造成损害。
三、通用型 XSS - Universal XSS 介绍
通用型 XSSUXSS是一种严重的安全漏洞。它不同于传统的 XSS跨站脚本攻击不受限于特定的网站或应用而是能够在广泛的环境中利用 WebView 的漏洞进行攻击。
2022 年Android 的 WebView 爆出 UXSS 漏洞这一漏洞影响范围广泛。攻击者利用该漏洞可通过精心构造的恶意网页在用户使用搭载存在漏洞 WebView 的 Android 设备访问时执行任意 JavaScript 代码。这意味着攻击者能够突破应用的安全边界获取设备信息、篡改应用数据甚至可能控制设备对用户隐私和设备安全构成极大威胁。
防御措施
及时更新 WebView 内核使用最新 Chromium 内核的 WebView 版本修复已知漏洞。禁用危险 API如限制 eval() 函数、避免动态执行未签名脚本。
四、WebView 跨域访问
关键配置方法 默认值 作用与风险场景 setAllowFileAccess true 控制是否允许通过 file:// 协议加载本地文件。默认开启可能泄露应用私有文件。允许file协议访问本地文件 setAllowFileAccessFromFileURLsfalse 控制 file:// 域页面能否访问其他 file:// 域内容。建议关闭以减少横向渗透风险。file域页面访问其他file资源 setAllowUniversalAccessFromFileURLsfalse控制 file:// 域页面能否访问任意 HTTP/HTTPS 内容。必须关闭以防止跨协议攻击。file域访问任意http/https资源
setAllowFileAccess此属性用于设置 WebView 是否允许访问本地文件。若设置为 trueWebView 可以访问设备本地存储中的文件。然而这也带来了安全风险恶意网页可能借此读取用户设备上的敏感文件如存储在本地的数据库文件、配置文件等。例如攻击者构造的恶意网页在 WebView 允许访问本地文件的情况下可能尝试读取用户的登录密码存储文件若存在此类不安全存储方式从而获取用户密码。setAllowFileAccessFromFileURLs该属性控制 WebView 是否允许从文件 URL 中访问其他文件。当设置为 true 时从本地文件 URL 加载的页面可以访问其他本地文件。同样这可能被攻击者利用通过在本地文件中嵌入恶意代码进而访问更多本地文件扩大攻击范围。setAllowUniversalAccessFromFileURLs此属性决定是否允许从文件 URL 中进行跨域访问。若设置为 true从本地文件 URL 加载的页面不仅可以访问本地其他文件还可能突破限制访问外部网络资源。这无疑为攻击者提供了更多机会他们可以通过本地文件漏洞进一步与外部恶意服务器进行交互获取更多敏感信息或下载恶意软件到设备上。
五、与本地代码交互 js
WebView 允许 JavaScript 与本地代码进行交互这为应用开发带来了便利但也存在安全风险。通过 JavaScript 接口WebView 可以调用原生应用的功能如访问摄像头、获取地理位置等。然而如果接口设计不当或缺乏有效的安全验证攻击者可能通过 JavaScript 代码调用这些接口获取用户的隐私信息。
例如恶意网页中的 JavaScript 代码可能在用户不知情的情况下调用摄像头拍摄照片或获取地理位置信息并发送给攻击者。开发者在实现 JavaScript 与本地代码交互时必须严格验证调用来源确保接口只能被信任的代码调用。
5.1接口暴露风险
通过addJavascriptInterface绑定Java对象 // 危险示例暴露系统级API
webView.addJavascriptInterface(new SystemAPI(), nativeObj); 5.2漏洞利用
反射调用敏感方法 // JS调用执行系统命令
nativeObj.getClass().forName(java.lang.Runtime).getMethod(exec, String.class).invoke(rm -rf /); 5.3JavaScript 与 Native 代码通信 风险场景通过 WebView 调用摄像头、定位等硬件功能时若未对参数进行类型和范围校验可能引发越权操作。
防御方案 白名单校验仅允许特定域名或协议调用 Native 接口。输入过滤对 JavaScript 传递的参数进行类型强制转换和内容过滤如正则表达式匹配。 六、Chrome 开发者工具可信根证书 Chrome 开发者工具可信根证书
作用开发者工具如 Chrome DevTools允许用户导入自定义根证书用于调试 HTTPS 流量。但若设备被植入恶意根证书攻击者可解密 HTTPS 通信实施中间人攻击。风险案例恶意应用在用户设备安装伪造根证书劫持银行应用的 HTTPS 请求。
解析 Chrome 开发者工具在移动 Web 开发和调试中被广泛使用。在使用 Chrome 开发者工具调试移动设备上的 WebView 时需要安装可信根证书。这是因为 WebView 在加载网页时会验证网页的 SSL 证书以确保通信安全。当使用 Chrome 开发者工具进行调试时工具会充当中间人对 WebView 与服务器之间的通信进行拦截和分析。为了让 WebView 信任 Chrome 开发者工具的中间人角色需要安装其提供的可信根证书。然而这也带来了安全风险如果恶意软件获取了该可信根证书就可能伪装成合法的中间人拦截和篡改 WebView 与服务器之间的通信窃取用户数据或进行其他恶意操作。因此在安装和使用 Chrome 开发者工具可信根证书时必须谨慎操作确保证书的安全性。 防御建议
证书锁定Certificate Pinning在应用中预置合法证书公钥仅接受指定证书的通信。用户教育提示用户不要随意安装未知来源的
七纵深防御体系构建
7.1. WebView基础加固
// 安全配置模板
WebSettings settings webView.getSettings();
settings.setJavaScriptEnabled(false); // 非必要不开启JS
settings.setAllowFileAccess(false);
settings.setAllowContentAccess(false);
settings.setAllowUniversalAccessFromFileURLs(false);
7.2. 跨域访问控制矩阵
业务场景 推荐配置 纯在线应用 关闭所有file协议访问 本地文件渲染 开启setAllowFileAccess禁用其他跨域权限 混合内容加载 严格白名单控制setAllowedOriginRules
7.3. 安全交互协议设计 接口暴露原则 使用JavascriptInterface注解限定可调用方法 双向参数校验示例 JavascriptInterface
public void safeMethod(String param) {if(!Pattern.matches([a-z], param)) {throw new SecurityException(非法参数);}// 安全逻辑
}
7.4. 证书安全增强 证书锁定Certificate Pinning #kotlin
val certPinner CertificatePinner.Builder().add(example.com, sha256/AAAAAAAA...).build()
val client OkHttpClient.Builder().certificatePinner(certPinner).build() 防中间人攻击 禁用开发者工具调试生产环境 强制使用CertificateTransparency验证
总结
移动 Web 安全涉及多个方面WebView 作为移动应用与 Web 内容交互的关键组件其安全性至关重要。开发者在使用 WebView 时必须充分了解其特性和潜在风险采取有效的安全措施如严格控制 WebView 的对外暴露、合理配置跨域访问权限、加强 JavaScript 与本地代码交互的安全验证以及妥善管理 Chrome 开发者工具可信根证书等以保障移动应用的安全和用户的隐私。 喜欢的点点赞和关注共同进步