Snapdrop 安全与隐私完整分析为什么不用数据库、文件如何端到端加密传输【免费下载链接】snapdropA Progressive Web App for local file sharing项目地址: https://gitcode.com/gh_mirrors/sn/snapdropSnapdrop 是一款开源的本地文件共享工具Progressive Web App灵感来自 Apple AirDrop让你在同一局域网内通过浏览器即可互传文件。它的核心安全设计可以概括为一句话服务器只做传话的从不碰你的文件——没有数据库、不存储任何文件并借助 WebRTC 对传输内容加密。本文将从源码层面拆解 Snapdrop 的安全架构帮你搞懂它为什么敢于宣称零文件留存。Snapdrop 是什么架构速览Snapdrop 的工作方式非常简单手机和电脑访问同一个网址部署在你自己的内网或公网服务器上两台设备在对方页面中出现气泡点一下气泡选择文件文件就直接从一台设备传到另一台整个系统只有两部分浏览器前端纯 HTML5/ES6 实现位于 client/ 目录NodeJS 后端只有 server/index.js 一个文件负责 WebSocket 信令转发官方对隐私问题的回答也值得一读见 docs/faq.md 中的What about privacy?章节。为什么不用数据库这是 Snapdrop 安全模型中最漂亮的一笔整个服务端没有引用任何数据库。打开 server/index.js 可以看到SnapdropServer在构造函数中只创建了一个 WebSocket 服务器和一个内存对象this._rooms {};this._rooms就是全部状态——一个按 IP 地址分组的房间字典纯内存、不落盘。它的作用只是记录哪些设备在同一个网络里server/index.js 中的_joinRoom方法当有新设备加入时通知其他设备peer-joined消息这意味着✅服务器无法保存你的文件——因为它连写文件的代码都没有 ✅进程一停所有信息即刻消失——没有历史、没有缓存、没有日志文件 ✅攻击面极小——没有 SQL 注入、没有凭据泄露、没有备份文件作为对比很多网盘/传输类工具需要数据库存储用户账号、文件索引和上传记录而 Snapdrop 的无状态设计从根上消除了文件被留存的可能。文件如何端到端加密传输正常模式WebRTC 直连P2P只要两台设备的浏览器支持 WebRTC目前 Chrome、Edge、Safari、Firefox 都支持文件就完全绕开服务器在设备之间直接传输。核心代码在 client/scripts/network.js 中RTCPeer类network.js负责建立 WebRTC 连接通过createDataChannel创建可靠的数据通道network.js文件被FileChunker切分为 64KB 的小块经数据通道逐块发送network.js加密发生在哪一层WebRTC 数据通道在底层使用DTLS-SRTP 协议连接建立时两台设备会自动完成密钥协商——这就是端到端加密的来源。传输途中的每一个字节都是密文任何中间节点包括服务器即使抓到数据也只是一堆乱码。服务器在这里的角色仅仅是信令服务器Signaling Server转发 SDP Offer/Answer 和 ICE 候选帮助两台设备找到彼此。信令内容只包含连接协商元数据不含任何文件内容。这一机制在 docs/faq.md 中有明确说明it is only used to establish a connection and is not involved in the file transfer。降级模式WebSocket 中继如果某台设备不支持 WebRTC老浏览器系统会降级为WSPeer模式network.js文件分块经服务器 WebSocket 中继转发。此时服务端在技术上能接触到数据流所以自建部署时务必启用 HTTPS/WSS下面会讲。服务器能看到什么看不到什么数据WebRTC 直连模式降级中继模式你的 IP 地址可见用于分组可见设备型号/系统/浏览器可见来自 User-Agent可见在线状态、设备数可见可见传输的文件名/大小❌ 看不到可见文件内容❌完全看不到端到端加密可见留存任何文件❌ 永不存储❌ 永不存储即使最保守地评估降级模式Snapdrop 依然做到了传输即结束文件只流经内存从不写入磁盘。自建部署的安全细节如果你想把 Snapdrop 部署在自己家里或公司内网Docker 一键完成参考 docs/local-dev.md 和 docker-compose.yml有几个安全要点TLS 证书自动生成docker/openssl/create.sh 会在容器启动时用自签 CA 生成证书让 WSS/PWA 功能正常工作反向代理配置docker/nginx/default.conf 将/server路径代理到 Node 服务并正确转发X-Forwarded-For头设备隔离靠 IP 分组服务器按 IP 划分房间server/index.js同一网络外的用户互相看不到部署时需注意代理必须设置X-Forwarded-For头否则经代理访问的所有客户端会被分进同一个房间而互相可见——这一点在 docs/local-dev.md 的 Deployment Notes 中有专门提醒。小结Snapdrop 的隐私设计哲学无数据库全部状态在内存中进程即销毁 P2P 优先文件经 WebRTC 数据通道端到端加密直连服务器仅做信令 无账号体系不收集任何个人信息无注册、无登录 开源可审计整个服务端不足 300 行代码server/index.js任何人都能轻松读完并验证对于如何在同一局域网内安全地传文件这个单一场景Snapdrop 用做减法的方式给出了教科书级的答案功能越少需要信任的组件就越少隐私风险也就越低。【免费下载链接】snapdropA Progressive Web App for local file sharing项目地址: https://gitcode.com/gh_mirrors/sn/snapdrop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
纯PyTorch实现DDPM:MNIST手写数字生成全流程拆解 简介:面向深度学习入门者与扩散模型研究者,提供一套可直接运行的DDPM实现资源包,涵盖从理论到代码的完整链路,完整复现了PyTorch环境下的训练与采样流程。整个包体共27个文件,约22.21MB,包含8个Python源码文… · 2026/9/20 23:14:03
Realtime API 会话接远程 MCP,Base URL 填 TaoToken /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/20 23:14:03
OpenResearch实战指南:构建可复现研究流程的完整方法 说到OpenResearch这个话题,我得先坦白:最早听见这词儿,我还以为是某个科研团队的内部代号。后来真正上手做了一轮开放研究项目,才意识到它根本不是某个软件,也不是某套固定模板,而是一整套从选题、记录、分… · 2026/9/20 23:13:03
Hero 开源库 CHANGELOG 深度解读:从 1.3.0 到 1.6.3 的版本演进与核心源码实现 Hero 开源库 CHANGELOG 深度解读:从 1.3.0 到 1.6.3 的版本演进与核心源码实现 【免费下载链接】Hero Elegant transition library for iOS & tvOS 项目地址: https://gitcode.com/gh_mirrors/he/Hero
Hero 是面向 iOS 与 tvOS 的优雅转场动画库… · 2026/9/20 23:56:16
grok-build v0.2.87 版本解读:自动订阅升级、/docs 导航与按模型推理强度配置 grok-build v0.2.87 版本解读:自动订阅升级、/docs 导航与按模型推理强度配置 【免费下载链接】grok-build SpaceXAIs coding agent harness and TUI. Fullscreen, mouse interactive, extensible. 项目地址: https://gitcode.com/gh_mirrors/gr/grok-build
… · 2026/9/20 23:56:16
create-t3-app 中的 NextAuth.js 集成指南:从会话管理到 tRPC 鉴权实战 开发工具CLI代码生成 【免费下载链接】create-t3-app The best way to start a full-stack, typesafe Next.js app 项目地址: https://gitcode.com/gh_mirrors/cr/create-t3-app 点击查看 免费下载 本篇技术指南以 create-t3-app 官方文档(葡萄牙语版 … · 2026/9/20 23:56:16
多路 Git Worktree 合并冲突爆发?TaoToken 这样改 Codex 通道 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/20 23:56:16
扩展二次剩余在密码学中的应用与实现 1. 扩展二次剩余的概念与背景在密码学研究中,二次剩余理论构成了许多公钥密码方案的基础数学结构。而扩展二次剩余(Extended Quadratic Residue)作为标准二次剩余的推广形式,为设计更灵活的密码协议提供了新的数学工具。简单来说&… · 2026/9/20 23:55:16
Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化 直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡… · 2026/9/20 0:00:41
Word表格编号全攻略:从列表编号到题注交叉引用 写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技… · 2026/9/20 0:00:41
从第一个站到第二个站:独立开发者的静态网站选型与落地实践 1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&… · 2026/9/20 0:00:41
Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化 直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡… · 2026/9/20 0:00:41
Word表格编号全攻略:从列表编号到题注交叉引用 写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技… · 2026/9/20 0:00:41
从第一个站到第二个站:独立开发者的静态网站选型与落地实践 1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&… · 2026/9/20 0:00:41