ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

PrivateBin 版本演进全史:从 ZeroBin 分支到 2.x 的零知识加密粘贴板技术路线图

PrivateBin 版本演进全史:从 ZeroBin 分支到 2.x 的零知识加密粘贴板技术路线图 PrivateBin 版本演进全史从 ZeroBin 分支到 2.x 的零知识加密粘贴板技术路线图【免费下载链接】PrivateBinA minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bits AES.项目地址: https://gitcode.com/GitHub_Trending/pr/PrivateBinPrivateBin是一个极简、开源的在线粘贴板pastebin项目其核心理念是服务器对粘贴内容零知识——所有数据都在浏览器端使用 256 位 AES 加密后再上传服务端仅存储密文。本文以仓库根目录的 CHANGELOG.md 为主线系统梳理该项目自 2012 年ZeroBin Alpha 时代至今十余年的版本演进历程并结合 lib/ 与 js/ 中的源码实现深入剖析其加密架构、前后端技术栈、存储后端与安全机制的变迁。读完本文你将完整掌握 PrivateBin 每个大版本的核心变化、关键配置项的前世今生以及零知识架构在工程上的落地方式。项目定位与版本概况PrivateBin 是 Sébastien Sauvage 所开发 ZeroBin 的一个分支fork在 1.0 版本2016-08-25正式更名为 PrivateBin。项目的核心安全模型可以概括为数据在浏览器端使用 256 位 AES 加密当前为 Galois/Counter Mode即 AES-256-GCM加密密钥存放在 URL 的#片段fragment部分不会发送到服务器服务端只负责存储密文与元数据理论上对内容零知识。当前仓库对应版本为2.0.5见 lib/Controller.php 中的VERSION常量同时 CHANGELOG 中已预告 2.0.6 与 2.1.0 的变更。从 CHANGELOG.md 可以清晰看到项目演进主要围绕四条主线加密与格式、前端技术栈、后端存储与架构、安全加固。加密架构的演进从 SJCL 到 WebCrypto1.3 版本密码学栈全面重写2019-07-09这是整个项目历史上最重大的加密变革CHANGELOG 中 1.3 版本明确记录JSON 与加密格式变更用浏览器内置的 WebCrypto API 替换了 SJCL 库#28、#74压缩实现替换用zlib.wasm替换rawdeflate.js解决了解压失败问题并与标准 deflate 实现兼容#193、#260、#328、#434、#440PBKDF2 迭代次数提升至 100k#350显著提高暴力破解口令的代价用 Fowler–Noll–Vo 校验和替代 MD5用于生成粘贴 ID#49密钥编码从 base64 改为 base58因为 Outlook 会截断链接末尾的等号base58 编码解决了邮件中链接被破坏的问题#377。这些改动在今天的源码中依然可验证。例如 js/privatebin.js 中密钥派生参数明确写着100000PBKDF2 迭代次数并注释we use PBKDF2 for key derivation。1.3 版本还确立了浏览器最低版本要求Firefox 54、Chrome 57、Opera 44、Safari 11、Edge 16且所有 Internet Explorer 版本均不兼容原因正是这些浏览器不支持 WebCrypto API、async/await、ES6 与 WebAssembly。v2 格式与 FormatV2 校验器1.3 起采用的 v2 格式至今仍是项目的标准格式。lib/FormatV2.php 中实现了对 v2 格式消息的严格校验粘贴必须包含adata加密参数、v版本、ct密文、meta元数据四个键评论还需pasteid与parentid校验逻辑会检查是否有多余的键、adata是否为数组、密文参数是否至少 8 项、IV 与盐是否为合法 base64 数据2.0.6 的 FIXED 条目提到对畸形的 v2 JSON 载荷返回 Invalid data. 而非 HTTP 500#1883正是这类严格校验的工程体现。2.0 时代移除 v1 兼容层2.0.02025-07-28是一个清理性的大版本彻底移除对 ZeroBin 与 v1 格式粘贴的支持——自 1.3 起 v2 格式已成为标准#551移除 base64 与 rawinflate 库#551进一步精简前端载荷。前端技术栈的现代化进程前端演进是 CHANGELOG 中篇幅最重的主线之一其趋势可以概括为从 jQuery 依赖走向原生 JavaScriptvanilla JS从 Bootstrap 3 走向 Bootstrap 5。jQuery 的引入与移除0.182013-02-24jQuery 升级到 1.9.11.7.22024-05-05jQuery 升级到 3.7.1同时新增基于 Bootstrap CSS 5.3.3 的可选模板bootstrap5配置项template bootstrap5#7282.0.2 / 1.7.92025开始将 jQuery DOM 元素创建重构为纯 JavaScript2.1.0未发布彻底移除前端 jQuery全面改用 vanilla JS同时移除无人维护的 js-verify 测试库改用 fast-check新增 js/jsconfig.json 用于 JavaScript 类型检查。Bootstrap 3 的退役2.1.0移除了对 Bootstrap 3 的支持因为其依赖 jQuery当前仅保留 Bootstrap 5 系模板。模板文件方面仓库根目录下 tpl/bootstrap5.php 是当前默认模板2.0.0 起bootstrap5成为默认模板#1572样式位于 css/bootstrap5/而 css/bootstrap/ 目录中的 Bootstrap 3.4.1 与 darkstrap 样式作为历史资产仍保留在仓库中。前端功能的时间线亮点版本前端功能0.18自动语法高亮53 种语言、Raw text 按钮、5 分钟/1 周过期选项1.0Preview 标签页、新 Logo 与 favicon、内容安全策略CSP头、JS 的 SHA512 SRI 哈希1.2附件视频/音频/PDF 显示、拖拽上传、QR 码生成、引入 DOMPurify 净化 HTML1.3.1文件上传大小限制默认从 2 MiB 提升到 10 MiB#4581.7.4保存 Markdown 粘贴使用.md扩展名#12931.7.6复制粘贴按钮 CtrlC/CmdC 快捷键#1390WASM 流式加载#14641.7.7支持多文件上传#10602.0.5显示系统相关的复制快捷键提示Mac 显示 CmdC其他平台 CtrlC#15062.0.5 还修复了将文档设为 Markdown 后复制按钮被隐藏#1703、移除附件后状态损坏#1824等问题可见前端交互细节在持续打磨。后端架构与工程实践演进从单体类到清晰的 MVC 结构1.0PHP 代码重构为符合 PSR-4 与 PSR-2 标准移除无人维护的 RainTPL 模板引擎模板改为直接的 PHP 文件1.2.1 / 1.3将PrivateBin类重命名为Controller使 MVC 模式更加明显#342。今天 lib/Controller.php 正是把请求处理、模型调用、视图渲染put it all together的枢纽类1.7.7大数据结构改为按引用传递以降低内存消耗#858。PHP 最低版本要求的变化版本最低 PHP 版本原因1.05.4#186—1.35.5identicon 库变更1.3.45.6使用原生hash_equals()1.6.07.3#707PHPUnit 升级2.0.07.4jdenticon 库变更源码中 lib/Controller.php 的MIN_PHP_VERSION 7.4.0与 CHANGELOG 记录一致。此外1.7.4启用 PHP 严格类型检查#13502.0.6切换到 PHP 原生JsonException类型1.7.6用str_starts_with/str_contains替换strpos#1373并添加了相关 polyfill 库#1476。配置系统的成型配置文件的演进在 CHANGELOG 中多次出现0.22重命名配置文件以方便升级1.1.1配置文件改用.php扩展名避免未受保护的安装泄露配置数据CVE-2017-09-29 相关1.3.2支持CONFIG_PATH环境变量#552。从 lib/Configuration.php 的实现看配置加载顺序是优先读取CONFIG_PATH环境变量指向的目录否则使用PATH . cfg即安装目录下的cfg/文件夹并读取其中的conf.php文件。配置缺失时会抛出带本地化消息的异常提示需要包含 [main]、[model]、[model_options] 配置段。该文件还内置了完整的默认值表例如sizelimit默认 1048576010 MiB过期选项5min、10min、1hour、1day、1week、1month、1year、never对应的秒数流量限制traffic.limit默认 10默认模板bootstrap5。2.0.1 新增的shortenbydefault配置项#1627与shlink配置段apikey、apiurl同样体现在 Configuration 默认值中对应的代理实现位于 lib/Proxy/ShlinkProxy.php 与 lib/Proxy/YourlsProxy.php。存储后端从扁平文件到多后端可插拔存储层是 PrivateBin 架构灵活性的重要体现CHANGELOG 记录了完整的演进路线默认后端文件系统Filesystem。lib/Data/Filesystem.php 展示了其实现细节粘贴文件按aa/bb/两层十六进制目录 32 位十六进制 ID 存储PASTE_FILE_PATTERN文件以.php结尾并写入?php http_response_code(403); /*保护行防止直接暴露数据目录时被读取0.22数据库加入版本号字段支持结构自动升级数据模型、流量限制与请求处理被重构1.0修复数据库存储时自动清理误删未过期粘贴#149支持 PostgreSQL#3701.3.1MySQL 数据从 BLOB 改为 MEDIUMBLOB 以支持更大附件#4581.4新增Google Cloud Storage 后端#795与Oracle 数据库支持#868Server salt、流量与清理限制器改为存储在存储后端中#4191.5新增S3 存储后端#994数据迁移脚本#10121.5.2允许 AWS SDK 使用默认凭据链#10702.0.0移除privatebin_data、privatebin_db、zerobin_db模型类配置必须替换为Filesystem或Database移除paste与comment表中的未用列。对应的后端实现分布在 lib/Data/Database.php、lib/Data/GoogleCloudStorage.php、lib/Data/S3Storage.php 中。数据库后端支持 MySQL/MariaDB、PostgreSQL、SQLite、Oracle配置为 Database 模型时默认 DSN 是sqlite:data/db.sq3见 lib/Configuration.php。功能演进大事记讨论Discussions与身份图标Alpha 0.122012-04-18引入讨论功能评论与昵称同样加密服务器不可见引入 Vizhash 作为头像相同 IP 显示相同图像但无法反推 IP1.0Identicon 成为带昵称评论的默认图标Vizhash 改为可选且基于 128 字节 SHA512 HMAC1.5Jdenticons 成为评论图标的可选项#7932.0.0Jdenticons 成为默认图标0.20opendiscussion配置项仅控制讨论复选框是否预选discussion false则完全禁用讨论功能。阅后即焚Burn after reading与密码保护Alpha 0.14实现阅后即焚打开 URL 显示粘贴后立即在服务器销毁Alpha 0.15删除 URL 功能0.20支持密码保护粘贴可选1.0切换为 GCM 模式从 CCM阅后即焚粘贴仅在通过回调成功解密后才删除防止聊天机器人等跟随 URL 导致误删1.7.0加载阅后即焚粘贴前要求确认#12372.0.1新增密码偷看peek功能#1254允许在创建粘贴时查看已输入的密码。Markdown 与格式化0.21引入 Markdown 格式支持引入通用的[formatter_options]配置段替代原先分散的启用选项defaultformatter默认值为plaintextsyntaxhighlighting配置被废弃1.0原始文本模式显示原始 Markdown 而非渲染后的 HTML1.7.5SRI 哈希改为可配置不再硬编码在模板中#1365。附件、邮件与缩短器1.3.2创建粘贴时可选择发送包含链接的邮件#3981.7.2缩短后的粘贴 URL 不再出现在邮件中#6061.7.7下载页面显示文件名与大小#6030.16曾因隐私顾虑移除 URL 缩短按钮1.0重新引入可选的缩短器支持1.5通过新的代理方式集成 YOURLS签名存储在配置中#7252.0.1新增 Shlink 端点与配置段、shortenbydefault自动缩短选项。多语言与 RTL项目使用 i18n/ 目录存放各语言 JSON 文件当前含 en.json、zh.json、ja.json 等 40 余种语言1.6.1支持阿拉伯语与希伯来语的从右到左RTL排版#11742.0.4新增瑞典语与波斯语翻译并重构异常消息的翻译机制、去重 JSON 错误消息翻译。安全加固历程与已披露 CVECHANGELOG 完整记录了项目历史上处理过的高危安全问题这些条目体现了零知识之外的安全工程纵深版本安全问题1.3.2 / 1.2.2附件文件名未转义导致 HTML 注入CVE-2020-52231.2.1无 WebCrypto 支持的旧浏览器可能生成低熵密钥2018-08-11 报告1.7.4YOURLS 代理 URL 过滤可被绕过缩短非本站 URLCVE-2024-398991.4SVG 预览净化防止实例上下文中的脚本执行CVE-2022-248331.7.9 / 2.0.3模板切换功能可导致任意 PHP 文件包含CVE-2025-647141.7.9 / 2.0.3恶意文件名可被用于本地自 XSS / HTML 注入CVE-2025-647111.7.9 / 2.0.2附件大小提示中的文件名未净化CVE-2025-62796除漏洞修复外安全加固措施还包括1.0引入 CSP 头与 SHA512 子资源完整性SRI哈希流量限制器用 IP 的 SHA256 HMAC 代替明文存储1.3阻止 Chrome 将粘贴内容发送到 Google 翻译#3781.4新增安全 HTTP 头、可配置豁免 IP 的速率限制器#787、限制创建粘贴与评论的 IP 名单#883、CSP 同时以 meta 标签输出应对配置错误的 Web 服务器、FLoC 退出#7762.0.4移除过时的X-XSS-Protection头#18252.1.0防止浏览器猜测 JSON(LD) API 响应的 MIME 类型#164。2.x 时代的关键转折2.x 系列标志着项目从功能累积期进入现代化与去遗留阶段术语统一2.0.0#397用更通用的 document 取代 paste单位切换2.0.0#1565从二进制字节改为 SI 单位这与 lib/Filter.php 中formatHumanReadableSize()按 1000 进制计算B → kB → MB → GB的实现一致v1 格式退役2.0.0管理脚本中新增 v1 粘贴统计与删除选项随后彻底移除 v1 支持前端去 jQuery2.1.0配合 Bootstrap 3 退役前端 JS 全部原生化。运维相关的重要变更1.1新增 Dockerfile支持容器化部署1.5.1新增管理脚本删除粘贴 #274、清理空目录 #277、清理过期粘贴 #276、统计 #3191.5新增存储后端迁移脚本#10121.7.6WASM 流式加载要求 Web 服务器配置application/wasmMIME 类型#14641.7.9修复使用 Filesystem 存储 PHP opcache 时流量限制器失效的问题该问题在 2.0.1 中再次修复。版本时间线速览版本发布日期里程碑Alpha 0.92012-04-11ZeroBin 早期版本Alpha 0.122012-04-18引入讨论与 Vizhash1.02016-08-25更名为 PrivateBinAES-GCMCSP/SRI1.32019-07-09WebCrypto、zlib.wasm、PBKDF2 100k、v2 格式1.52022-12-11S3 后端、迁移脚本1.7.22024-05-05引入可选 bootstrap5 模板2.0.02025-07-28bootstrap5 为默认、移除 v1、Jdenticon 默认2.0.52026-07-11当前仓库版本lib/Controller.php2.1.0未发布移除 jQuery 与 Bootstrap 3vanilla JS结语从 2012 年的 ZeroBin Alpha 到 2026 年的 PrivateBin 2.0.5CHANGELOG 记录的不仅是功能的增删更是一套零知识安全架构在现代 Web 平台上的完整落地过程浏览器端 AES-256-GCM PBKDF2 密钥派生 WebCrypto API zlib WASM 压缩构成加密链路严格的服务端 v2 格式校验lib/FormatV2.php与可插拔存储后端lib/Data/构成数据链路持续的安全修复与 CSP/SRI 等纵深防御措施则守护着整条链路。对于希望部署或二次开发零知识粘贴服务的开发者沿着 CHANGELOG 的版本脉络阅读对应源码入口为 index.php 与 lib/Controller.php是理解这套架构最有效的路径。【免费下载链接】PrivateBinA minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bits AES.项目地址: https://gitcode.com/GitHub_Trending/pr/PrivateBin创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表