一、先说结论:隐私合规已经不是"大厂才要管"的事
过去两年,我们给十堰本地客户做网站和小程序交付时,被问得最多的问题从"能不能做得再便宜一点",慢慢变成了"我这个收集手机号要不要写隐私政策"。这个变化很真实:只要你的网站、小程序或APP收集了用户的姓名、手机号、位置、身份证号、人脸照片中的任何一项,你就已经是《个人信息保护法》意义上的"个人信息处理者",义务与公司规模无关。十堰一家只有四个人的培训机构,一样会因为小程序没配隐私协议而审核被驳回。
这篇文章不讲空泛的法条,而是按"官网、小程序、APP"三类载体,把告知同意、最小必要、单独同意、可撤回这几件事拆成可以照着做的步骤和代码。文中出现的三个案例,都是我们在十堰本地项目中真实遇到或客户反馈过的情况,最后附一张七步整改清单。
二、三条底线:先搞懂再动手
1. 告知同意:不能"默认勾选"
《个人信息保护法》第十三条、第十四条要求:处理个人信息应当取得个人同意,同意必须是自愿、明确作出的。翻译成产品语言就是三句话:不能默认勾选;不能把"同意隐私政策"和"同意注册"绑成一个按钮;不能因为用户不同意就拒绝提供与个人信息无关的基础功能。
2. 最小必要:只收你真正要用的字段
一个卖本地特产的商城小程序,为了发优惠券要手机号是合理的;同时索取通讯录、麦克风、精确位置、相册全部权限就不合理。监管通报里最常见的表述是"超范围收集个人信息""强制索取权限",判定标准就是:这个字段和当前业务功能是否直接相关。
3. 单独同意与可撤回
处理敏感个人信息(身份证号、人脸、生物识别、金融账户、行踪轨迹、不满十四周岁未成年人信息)需要单独同意,不能用一份笼统的隐私政策打包带走。同时用户要能撤回同意、能注销账号、能要求删除数据,且撤回的路径不能比同意的路径更麻烦。
三、官网:最容易被忽略的重灾区
很多十堰企业的官网是几年前做的展示站,底部只有一行版权,没有隐私政策、没有备案号,表单提交按钮点下去直接把姓名手机号存进数据库。这类站点一旦被投诉,整改成本不高,但暴露出来的问题很典型。
1. 表单必须做到"三有"
- 有链接:表单附近提供《隐私政策》可点击链接,不能只写一句"提交即代表同意";
- 有勾选:使用未预选的 checkbox,由用户主动勾选后才能提交;
- 有留痕:后端记录同意的版本号、时间、IP,日后发生争议时这是唯一能拿出的证据。
2. 一段可直接用的表单代码
<form id="consult" action="/api/lead" method="post">
<input name="name" placeholder="您的称呼" required>
<input name="phone" placeholder="手机号" pattern="1[3-9]\d{9}" required>
<label>
<input type="checkbox" name="agree" id="agree" required>
我已阅读并同意<a href="/privacy" target="_blank">《隐私政策》</a>
</label>
<button type="submit">提交咨询</button>
</form>
后端落库时至少保留四个字段:policy_version、agreed_at、client_ip、source_page。政策更新时版本号要跟着变,否则"用户同意的是旧版本"这个漏洞在检查时很难解释。
3. 统计脚本和Cookie也要告知
官网接入百度统计、CNZZ、Google Analytics 时,这些工具会写入 Cookie 并采集设备信息。合规做法是在页脚放一条简短的 Cookie 说明,首次访问时给出可关闭的提示条,并说明"继续浏览即同意使用必要Cookie"。这不是形式主义:欧洲客户或外贸站点对这一点尤其敏感。
另外提醒一句,网站底部的 ICP 备案号、公安备案号属于法定义务,和隐私合规是两套要求,具体流程可以参考我们之前整理的十堰企业ICP备案全流程指南,两件事一起做能省一遍资料准备。
四、微信小程序:2023年之后必须过的一道坎
微信从 2023 年 9 月起要求小程序在调用隐私接口前完成隐私协议配置与用户授权,未配置的小程序在调用 wx.getUserProfile、wx.getLocation、wx.chooseImage、wx.getPhoneNumber 等接口时会直接失败。这是我们遇到案例最多的一类问题。
案例一:十堰一家餐饮连锁的小程序突然"点不动"了
客户的小程序上线一年多,一直正常。某次微信基础库升级后,用户点"获取手机号领取优惠券"没有任何反应,后台也收不到报错。排查后发现两个问题:一是小程序后台的"用户隐私保护指引"从未填写,二是代码里没有处理隐私授权事件。修复只花了半天,但活动期间流失的订单无法挽回。这类故障的共同特征是没有报错、只有沉默,所以必须在上线前主动检查。
1. 后台配置:先填"用户隐私保护指引"
- 登录微信公众平台,进入"设置 - 服务内容声明 - 用户隐私保护指引";
- 勾选实际使用的信息类型(手机号、位置、相册、摄像头、昵称头像等),只勾真正用到的;
- 填写每个信息类型的用途说明,例如"用于向您发送订单状态通知",不要写"用于提升服务体验"这类空话;
- 提交审核,通过后指引会展示在小程序的隐私协议页。
2. 代码实现:onNeedPrivacyAuthorization 的正确写法
在 app.json 中开启隐私检查,然后监听隐私授权事件,用户点击"同意"后再调用 resolve 放行:
// app.json
{ "usingComponents": {}, "__usePrivacyCheck__": true }
// 页面中监听隐私授权
wx.onNeedPrivacyAuthorization((resolve) => {
wx.showModal({
title: '隐私保护提示',
content: '为向您提供附近门店查询服务,需要获取您的位置信息,详见《隐私政策》。',
confirmText: '同意',
cancelText: '暂不',
success: (res) => {
if (res.confirm) {
resolve({ event: 'agree', buttonId: 'agree-btn' });
} else {
resolve({ event: 'disagree' });
}
}
});
});
关键点有三个:buttonId 必须与页面上真实存在的按钮 id 一致;用户拒绝后要有降级方案(例如手动输入城市而不是直接白屏);不要自己伪造一个"同意"弹窗绕过官方组件,审核会被驳回。
3. 手机号与位置:能少要就少要
很多业务其实不需要手机号。会员体系可以用 openid 打通,配送联系可以用虚拟号,位置查询可以让用户手动选择城市。少收一个字段,就少一份存储义务、泄露风险和合规成本,这在十堰这种熟人社会型市场里尤其重要——用户对"刚咨询完就接到推销电话"非常敏感。
五、APP:首次启动的那三秒决定合规成败
APP 的检查最严,因为应用商店和监管工具都会自动检测。三个硬性要求:
- 首启隐私弹窗:在用户点击"同意"之前,不得初始化任何会收集设备信息的 SDK,包括统计、推送、崩溃监控;
- 权限按需申请:相机权限在用户点"拍照上传"时申请,不要一启动就弹一串权限;
- 第三方SDK清单:在隐私政策中列明每个SDK的名称、收集的信息类型和用途,这是应用商店审核的高频驳回原因。
实测数据:一个集成了推送、统计、地图、支付四个 SDK 的普通工具类 APP,首次启动时被采集的设备标识、网络状态、粗略位置等字段通常有十几项。如果在同意前就初始化,检测工具会直接判定"未经同意收集个人信息"。正确顺序是:启动页 → 隐私弹窗 → 用户同意 → 初始化 SDK → 进入首页。
六、七步整改清单
- 梳理数据清单:列出每个系统收集的字段、用途、存储位置、保存期限、经手人员;
- 补齐文本:官网《隐私政策》《Cookie说明》,小程序隐私保护指引,APP 隐私政策与SDK清单;
- 改造入口:表单加未预选勾选,小程序接
onNeedPrivacyAuthorization,APP 加首启弹窗; - 权限收敛:关闭一切"用不到但已申请"的权限,删除无用SDK;
- 同意留痕:数据库记录版本号、时间、IP、渠道,保留期不少于业务存续期;
- 提供出口:上线账号注销、数据导出、撤回同意三个功能,路径不超过三级;
- 定期复查:每次发版前跑一遍自查,每年至少做一次全量梳理。
这套动作做完,一个中等规模的企业站点加小程序,投入通常在两到五个工作日。相比被通报、被下架、被要求限期整改的代价,这笔投入非常划算。若企业同时涉及等保定级备案,建议把隐私合规与等保2.0测评整改放在同一轮做,技术措施和数据台账可以复用。
七、给十堰企业的落地建议
第一,把隐私合规写进项目合同和验收清单,不要等上线后补。外包开发时明确约定"交付物包含隐私政策文本、同意留痕字段和权限清单",否则后期加功能时很容易漏掉。第二,指定一个责任人,通常是产品或技术负责人,每季度核对一次实际收集的字段与隐私政策是否一致。第三,不要抄网上的隐私政策模板,模板里的业务场景和你完全不符,反而会成为把柄。
十堰易度网络传媒有限公司在网站建设、APP开发、小程序开发和网络安全服务中,已经把个人信息保护检查列为交付前的固定环节:从表单同意留痕、小程序隐私接口适配,到APP权限最小化和SDK清单整理,都有对应的检查项。对十堰本地企业来说,合规不是给监管看的材料,而是让用户敢填手机号、敢下单、敢长期使用的那份信任。把这件事做扎实,技术投入才真正转化为生意。
