微信搜索【临时阅读】在线体验阅后即焚功能
1. 方案概述
本文针对密码解锁、限时查看、阅后即焚、防截图溯源类微信小程序,给出完整前后端技术架构设计。目前已上线验证,可以搜索【临时阅读】在线体验功能
1.1系统定位
加密限时文件分享工具(非私密聊天),规避“阅后即焚无法溯源”的合规风险,满足国内互联网可追溯、可审计要求,同时实现:
-
图片/视频/文档加密上传分享
-
密码解锁访问
-
设置过期时间、最大查看次数
-
前端防截屏 + 动态水印溯源
-
阅后权限销毁、不可二次查看
-
全链路日志留存、合规可溯源
1.2技术栈
-
前端:微信原生小程序 WXML + WXSS + JavaScript
-
后端:Node.js + Express
-
数据库:MySQL 8.0
-
文件存储:服务器本地 / 对象存储(OSS/COS)
-
安全能力:AES加密、动态水印、LSB隐形水印、访问风控、日志审计
2. 整体系统架构(四层架构)
2.1 架构分层
客户端层(微信小程序)
-
用户授权登录、获取OpenID、设备信息
-
文件上传、密码设置、有效期/次数设置
-
密码解锁查看内容
-
防截屏API、动态全屏水印、禁止长按保存
-
阅后销毁前端视图,禁止缓存
接口服务层(Express)
-
登录鉴权、Token签发与校验
-
文件上传接收、内容审核对接、加密存储
-
分享链接生成、密码校验、权限校验
-
访问次数统计、过期自动失效
-
水印参数下发、风控拦截
数据持久层(MySQL)
-
用户数据、分享任务数据、访问日志数据
-
存储加密密钥、过期时间、查看次数、状态
-
全链路审计日志留存
资源存储层
-
文件加密存储(密文落地)
-
服务端动态嵌入隐形水印
-
过期文件定时清理(合规留存期后)
2.2 核心架构优势(解决行业痛点)
-
合规安全:不做“无痕销毁证据”,只销毁访问权限,日志全程留存
-
防泄露闭环:密码权限 + 过期次数限制 + 显性水印 + 隐形溯源水印
-
小程序过审友好:产品定位为“加密文件分享”,非私密聊天工具
-
轻量易部署:Node+MySQL运维成本低,适合个人/创业项目落地
3. 核心业务流程设计
3.1 完整业务链路
-
用户登录:小程序授权获取OpenID,后端生成唯一用户身份与Token
-
上传文件:用户上传图片/视频/文档,设置:访问密码、过期时间、最大查看次数
-
后端审核+加密:先内容合规审核,审核通过后AES加密文件,密文存储
-
生成分享任务:数据库生成一条分享记录,生成唯一访问ID
-
他人访问:输入密码,后端校验密码、是否过期、是否超次数
-
展示内容+水印:校验通过后,返回带用户溯源水印的资源,前端开启防截屏
-
阅后自动失效:查看完成后次数-1,达到上限立即失效,无法再次打开
-
日志留存:记录谁、何时、何设备访问,永久留存审计日志
3.2 关键设计:真正合规的“阅后即焚”
绝对不做:服务端记录彻底删除
只做:访问权限永久销毁
-
用户无法再打开、无法再次预览、链接彻底失效
-
但后台访问日志、创建日志、溯源记录全部保留
-
完美满足监管“可追溯、可取证”要求
4. MySQL 数据库表结构设计(核心三张表)
4.1 用户表 user
CREATE TABLE `user` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`openid` varchar(100) NOT NULL COMMENT '小程序openid',
`nickname` varchar(50) DEFAULT '',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP,
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`status` tinyint DEFAULT 1
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
4.2 分享任务表 share_task(核心业务表)
每一次文件分享对应一条任务,控制密码、过期、次数、状态
CREATE TABLE `share_task` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`task_code` varchar(64) NOT NULL UNIQUE COMMENT '唯一访问标识码',
`user_id` int NOT NULL COMMENT '创建者ID',
`file_type` varchar(20) NOT NULL COMMENT 'image/video/doc',
`file_path` varchar(255) NOT NULL COMMENT '加密文件存储路径',
`file_key` varchar(100) NOT NULL COMMENT 'AES加密密钥',
`view_pwd` varchar(100) NOT NULL COMMENT '访问密码',
`max_view_times` int DEFAULT 1 COMMENT '最大查看次数',
`used_times` int DEFAULT 0 COMMENT '已查看次数',
`expire_time` datetime NOT NULL COMMENT '过期时间',
`status` tinyint DEFAULT 1 COMMENT '1正常 0已销毁/过期',
`create_time` datetime DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
4.3 访问日志表 share_log(合规审计核心)
CREATE TABLE `share_log` (
`id` int PRIMARY KEY AUTO_INCREMENT,
`task_code` varchar(64) NOT NULL,
`visitor_openid` varchar(100) DEFAULT '',
`visitor_device` varchar(200) DEFAULT '',
`ip` varchar(50) DEFAULT '',
`view_time` datetime DEFAULT CURRENT_TIMESTAMP,
`status` tinyint DEFAULT 1 COMMENT '1成功查看 0访问失败'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
5. 后端 Express 核心模块设计
5.1 后端目录结构(生产结构)
/server
/config # 配置文件、数据库、密钥、跨域
/controller # 业务控制器
/service # 加密、水印、文件处理服务
/model # MySQL模型
/router # 路由分发
/middleware # Token校验、风控、日志中间件
/public # 加密文件存储
app.js # 入口文件
5.2 核心能力模块
-
小程序登录模块:code2Session 获取 openid,签发自定义Token
-
文件上传与审核模块:接收文件 - 内容审核 - AES加密 - 落地存储
-
分享权限模块:密码校验、过期判断、次数限流、状态拦截
-
阅后销毁模块:访问次数自增,达标自动禁用任务状态
-
水印生成模块:下发溯源参数,服务端嵌入隐形水印
-
日志审计模块:所有访问行为强制落库
-
定时清理模块:定时扫描过期任务,关闭访问权限、清理过期文件
5.3 核心安全设计(后端)
-
文件全程密文存储:服务器落地无明文,即使文件泄露也无法直接打开
-
密码加密存储:访问密码MD5/SHA256加密存库,不存明文
-
动态单次解密:每次合法访问临时解密输出,不暴露原密钥
-
IP+设备指纹风控:高频异常访问拦截
-
强制内容审核:加密前先审核,杜绝违禁内容
6. 小程序前端核心能力设计
6.1 页面结构
-
登录授权页
-
创建分享页:上传文件、设置密码、次数、过期时间
-
密码解锁查看页(核心安全页)
-
我的分享列表页
6.2 前端安全防护体系
-
禁止长按保存:image/video 关闭长按菜单
-
iOS防截屏API:启用 setVisualEffectOnCapture 截屏隐藏
-
全屏动态溯源水印:绑定访客openid+时间+设备
-
禁止页面缓存:阅后清空页面数据,卸载资源
-
一次性视图:返回后无法二次回看,必须重新解锁(已失效则直接拒绝)
7. 加密与阅后即焚核心逻辑
7.1 文件加密流程
-
用户上传文件至后端
-
后端完成内容审核
-
随机生成AES密钥
-
文件加密后保存,明文立即销毁
-
密钥入库绑定当前分享任务
7.2 阅后失效逻辑
-
用户每成功查看一次,used_times +1
-
used_times >= max_view_times → 任务状态置为0(失效)
-
过期时间到达 → 自动失效
-
失效后:所有请求直接返回“内容已销毁”
-
日志、数据记录永久保留,满足合规
8. 合规与小程序过审方案(重点)
8.1 规避封禁的核心定位
不做私密聊天、不做无痕通讯
产品定位:限时加密文件分享工具
功能描述:密码保护、限时查看、防止随意扩散、泄露溯源
8.2 绝对禁止的话术
禁止:无痕、阅后即焚无记录、秘密聊天、隐匿记录
允许:限时访问、权限销毁、溯源水印、加密保护
8.3 合规底线
-
所有访问行为100%落库
-
所有内容先审核、后加密、后分发
-
不支持匿名非法传播
-
可随时下架违规内容、追溯责任人
9. 性能与扩展方案
-
高可用扩展:可将本地文件替换为阿里云OSS/腾讯云COS对象存储
-
审核扩展:可对接微信内容安全/阿里云鉴黄接口
-
水印升级:前端动态水印 + 后端LSB隐形水印双重溯源
-
定时任务:使用 node-schedule 实现过期文件清理
10. 在线体验
本架构是目前小程序阅后即焚类产品最稳、最合规、最容易上线的技术方案。