Mapspoto

架构说明

MapSpoto 前端使用 Expo / React Native 构建,后端使用 Supabase 提供认证、数据库、存储和实时能力。

技术栈本身不是安全保证,但它们提供了成熟的认证、权限和数据库能力,使我们可以基于现成机制做更严格的访问控制。

数据库访问控制

MapSpoto 使用 PostgreSQL Row Level Security(RLS)限制数据访问。

这意味着普通客户端只能读取自己有权限查看的数据,不能通过正常接口随意访问其他用户的不公开数据。

我们不会在网页上直接贴大段 SQL 策略,但会持续检查和收紧数据库访问规则。

账号与密码安全

账号系统基于 Supabase Auth。

开发者无法看到你的明文密码,密码由认证系统负责安全存储和校验。

前端密钥使用原则

App 前端只使用受限的匿名访问密钥(Anon Key)连接后端。

高权限的服务端密钥不会放进前端代码或打包到 App 中。

安全检查方式

我们会使用第三方工具和平台能力检查常见安全问题,例如:

  • Supabase Security Advisor:检查数据库、RLS 和存储访问配置。
  • 依赖安全扫描:检查第三方依赖中的已知漏洞。
  • 代码扫描工具:检查常见安全问题和错误配置。
  • 密钥泄露检查:确认项目中没有误提交高权限密钥或敏感环境变量。

最近一次依赖安全检查结果(2026年6月4日,版本1.4.0)

我们已重新运行前端依赖安全检查,并确认此前处理过的依赖问题未再次出现。

当前结果为:Critical 0 / High 0 / Moderate 0 / Low 0

当前 Yarn Audit 报告未发现依赖漏洞;本次检查覆盖 1369 个依赖。

我们会继续在依赖更新和发布前复查第三方包风险,并保留原始审计报告供下载核对。

检查工具:Yarn Audit。原始报告可下载查看。

下载 Yarn Audit 原始报告(JSON)

最近一次密钥泄露检查结果(2026年6月4日,版本1.4.0)

我们已使用 gitleaks 对当前受版本控制的源码文件进行了密钥泄露扫描。

当前结果为:0 findings

本次复查确认当前 Git 跟踪源码未发现密钥泄露;扫描不包含 Git 历史记录、本地环境文件、运行时配置文件或本地构建生成文件。

检查工具:gitleaks。原始报告可下载查看。

下载 gitleaks 原始报告(JSON)

最近一次代码安全扫描结果(2026年6月4日,版本1.4.0)

我们已使用 Semgrep 对当前受版本控制的前端源码进行了静态代码安全扫描。

当前结果为:0 findings

本次复查共扫描 573 个前端相关目标,当前未发现安全命中,也未出现扫描错误或解析警告。

检查工具:Semgrep。原始报告可下载查看。

下载 Semgrep 原始报告(JSON)

最近一次移动端安全检查结果(2026年6月4日,版本1.4.0)

我们已使用 MobSF 对 MapSpoto 的 iOS 和 Android 安装包进行了静态安全分析。

iOS 结果为:64/100(Low Risk),未发现 High 风险项。App Transport Security 配置为 NSAllowsArbitraryLoads=false

iOS 复核中,我们已确认 Release 包内 hermes.framework/hermes 的调试符号已剥离,SO 符号数量为 0。MobSF 仍保留 SYMBOLS STRIPPEDENCRYPTEDRPATH 和常见 C API 使用等通用二进制告警;其中本地 IPA 的 ENCRYPTED=false 属于 App Store 分发前的扫描现象,不代表线上分发包未受 Apple 加密保护。

Android 结果为:55/100(Medium Risk),MobSF 报告 1 个 High 风险项:Remote WebView debugging is enabled

该 Android WebView 调试项已完成人工复核。反编译 Release APK 后,第三方库 react-native-webview 仅在 ReactBuildConfig.DEBUG 为 true 时默认调用 WebView.setWebContentsDebuggingEnabled(true)。当前扫描包为 Release 构建,且承载登录安全校验的 Turnstile WebView 已显式设置 webviewDebuggingEnabled={false},因此生产环境不会默认开启 WebView 远程调试。该项按静态规则命中/条件性告警记录,不作为实际生产高危漏洞处理。

Android 中危/告警项还包含第三方 SDK 组件和静态规则命中,例如导出组件、外部存储、临时文件、AsyncStorage/SQLite、日志、弱 hash、随机数和 Sentry 崩溃上报。我们会优先关闭非必要导出组件,但 expo.modules.clipboard.ClipboardFileProvider 是 Expo Clipboard 必需的只读 provider,必须保持 android:exported=true;强制改为 false 会导致 Android 启动崩溃。该项按第三方 SDK 必需组件的风险接受项记录,并通过受限 provider 路径降低暴露面。

检查工具:MobSF。原始报告可下载查看。

下载 iOS MobSF 报告(PDF)

下载 Android MobSF 报告(PDF)

近期改进方向

  • 收紧公开资料字段,减少不必要的个人信息公开展示。
  • 清理公开存储访问过宽的问题,避免公开列出整个文件桶内容。
  • 简化资料完整度规则,避免把联系方式等敏感信息作为完善资料的必要条件。

说明边界

我们会持续改进安全配置和产品逻辑,但不会宣称“绝对安全”。

安全是一个持续维护的过程。如果发现新的问题,我们会继续修复和收紧。

返回隐私政策
规范链接:https://www.mapspoto.com/security-practices/zh-CN/