SuperAPI AI 工具集

capacitor-ios-security-hardening

安全与审计

查看项目

更新于 10-15 20:10

技能介绍

用途:审计并渐进加固 Capacitor iOS 应用的 Xcode 安全构建设置与原生插件代码,仅修改构建设置和 entitlements,绝不触及 Web 代码、ATS、签名或密钥。

适用时机:用户想审计或加固 Capacitor 应用的 iOS 构建配置;询问 Enhanced Security、ENABLE_ENHANCED_SECURITY、hardened-process entitlements、指针认证、arm64e 或内存标记;启用增强安全后链接步骤报 arm64e 错误;插件作者想要更严格警告或 CI 中运行 xcodebuild analyze。不适用于 ATS/TLS 固定/签名/密钥/WebView 配置、App Store 隐私清单与审核清单、AppDelegate 到 SceneDelegate 迁移、Android R8 等(分别属于 capacitor-security、capacitor-apple-review-preflight、capacitor-uiscene-migration 等技能)。

关键事实:构建设置不跨工程边界,App target 设置不影响 Pods、SPM 包或 npx cap sync 生成的 Cordova 插件包;加固插件代码需在插件仓库(podspec / Package.swift)中做。默认 Capacitor App target 是纯 Swift,Clang 警告与 analyzer 仅在存在 .m/.mm/.c/.cpp 时才有意义。Capacitor 8 模板已在工程级设置三个 Stage A 警告,应报告为已加固,不要重复添加。WKWebView 内容不受影响。指针认证会给设备构建加入 arm64e 切片,所有链接的二进制都必须含 arm64e,否则链接失败,这是主要风险。不要编辑生成文件(ios/App/Pods/、Pods-App.*.xcconfig、ios/App/CapApp-SPM/Package.swift、ios/capacitor-cordova-ios-plugins/、ios/debug.xcconfig)。

工作流:1) 先告知用户将先审计、写计划、获批前不改动,无 git 建议先提交。2) 只读发现:确认 ios/App/App.xcodeproj、判断 SPM 或 CocoaPods、读 package.json 中 @capacitor/ios 版本、检测 App target 语言、列出含二进制的原生依赖、读已有决策文档,并用 xcodebuild -showBuildSettings -json -project ios/App/App.xcodeproj -target App -configuration Release > /tmp/app-release.json 配合 node <skill>/scripts/audit-build-settings.mjs /tmp/app-release.json --pbxproj ios/App/App.xcodeproj/project.pbxproj 审计,检查 entitlements。3) 按阶段列计划并请用户批准/修改/取消,包括编译器警告、静态分析器、增强安全(含依赖计划)、内存标记(默认关)、额外诊断、无理由的显式 = NO。4) 逐阶段应用,优先让用户在 Xcode 设置,亲自编辑时只改工程自身 Debug/Release 的 buildSettings,每阶段后构建。5) 验证:npx cap sync ios,之后 xcodebuild -project ios/App/App.xcodeproj -scheme App -configuration Release -destination 'generic/platform=iOS' CODE_SIGNING_ALLOWED=NO build(CocoaPods 用 -workspace),xcodebuild analyze,lipo -archs 确认切片,再跑审计脚本,真机测试。6) 报告并更新决策文档。

限制:改动由用户承担,增强安全会把潜伏内存 bug 变成崩溃,须先报告获批并在真机测试后再发布。错误处理涵盖 arm64e 链接失败、CocoaPods 沙箱、警告激增、设置被覆盖、内存标记崩溃、npx cap sync 后编辑丢失等情形。