pwa 安全排查需聚焦 service worker、web app manifest 和 https 三大机制;重点检查 https 全链路启用、sw 可信加载与缓存逻辑、manifest 与 csp 协同防护,以及前端敏感信息和第三方依赖风险。

PWA 的安全漏洞排查不能只看 JavaScript 代码本身,而要围绕其三大核心机制——Service Worker、Web App Manifest 和 HTTPS 安全上下文——展开针对性检查。重点不在“有没有 JS 漏洞”,而在“JS 是否被滥用或误配导致信任链断裂”。
确认 HTTPS 全链路强制启用
所有 PWA 功能(包括 Service Worker 注册、Push API、Geolocation)都要求页面在安全上下文中加载。若 HTTP 页面尝试注册 SW,现代浏览器会直接拒绝,但开发者常忽略重定向配置或混合内容(HTTP 资源)问题。
- 用浏览器地址栏确认协议为 https://,且无“不安全”提示
- 检查 Network 面板中所有资源(尤其是 sw.js、manifest.json、字体、图片)是否均为 HTTPS 加载,避免混合内容警告
- 服务器需配置 HSTS 头(
Strict-Transport-Security: max-age=31536000; includeSubDomains),防止首次访问被降级劫持
审查 Service Worker 的可信加载与缓存逻辑
SW 拥有请求拦截与响应注入能力,一旦被污染或设计不当,可长期劫持用户流量。排查关键点是“谁控制它”和“它缓存了什么”。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 确保 register() 调用前校验协议:
if ('serviceWorker' in navigator && location.protocol === 'https:'),避免开发环境误触发 - 检查 sw.js 文件是否静态托管,禁止通过模板引擎动态生成(如
/sw?version=1.2),防止服务端注入 - 审计缓存策略:避免 无条件 cache.put() 用户输入的 URL 或响应体;对 fetch 事件中的
request.url做白名单校验,防止恶意脚本被缓存执行
验证 Web App Manifest 与 CSP 的协同防护
Manifest 决定安装行为,CSP 决定执行边界。两者配合不当时,会放大 XSS 或供应链攻击风险。
- 打开 manifest.json,确认
start_url和scope均为同源 HTTPS 地址,且scope不设为/(除非全站可信) - 检查响应头或 meta 标签中的 CSP 是否禁用危险指令:
unsafe-inline、unsafe-eval应仅在必要时局部启用;script-src必须显式列出可信 CDN,禁止使用* - 若使用内联脚本(如 Google Analytics),必须配合 nonce 或 hash,例如:
script-src 'self' 'sha256-Abc123...'
扫描前端敏感信息与第三方依赖风险
PWA 前端代码常打包成单个 bundle.js,易暴露密钥、API 端点或内部路径,同时依赖链可能引入已知漏洞。
- 用 grep 或 VS Code 全局搜索:
API_KEY、password、localhost、192.168.等关键词,确认无硬编码凭证 - 运行 npm audit --audit-level high 检查依赖树,重点关注
webpack、workbox、lodash等构建/运行时库的已知 CVE - 对生产环境 JS 文件启用 Subresource Integrity (SRI):为所有外链脚本添加
integrity属性,防止 CDN 被篡改
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










