NodeWarden 附件与 Send 文件分享指南:R2 与 KV 双模式、大小上限与一次性令牌安全
NodeWarden 附件与 Send 文件分享指南R2 与 KV 双模式、大小上限与一次性令牌安全【免费下载链接】nodewardenBitwarden-compatible server running on Cloudflare Workers项目地址: https://gitcode.com/gh_mirrors/no/nodewardenNodeWarden 是一个运行在 Cloudflare Workers 上的 Bitwarden 兼容密码管理服务器除了管理密码库还内置了附件加密存储和Send 安全文件分享两大能力附件可加密挂到密码条目下Send 则能生成带密码保护、限时自动删除的分享链接。本文带你搞懂它的 R2 与 KV 双存储模式、文件大小上限以及一次性令牌是如何保护你的每一次上传和下载的。先搞懂附件Attachment和 Send 各适合什么场景功能用途谁能访问典型场景附件把文件加密后绑在某个密码条目下仅自己客户端用密码库密钥解密存银行卡照片、私密文档、密钥文件Send生成临时分享链接可设密码拿到链接 密码的外部接收者把文件一次性安全地发给别人两者底层共用同一套对象存储抽象层由 blob-store.ts 统一封装读写逻辑代码里通过存储绑定的名称自动识别当前是 R2 还是 KV 模式。存储模式怎么选R2 vs KV 一张表看懂部署时 NodeWarden 提供两套配置默认的 wrangler.toml 绑定 R2 桶ATTACHMENTS桶名nodewarden-attachmentsKV 模式则使用 wrangler.kv.toml 绑定 KV 命名空间ATTACHMENTS_KV部署命令改为npm run deploy:kv。对比项R2 模式默认KV 模式是否需要付费卡需要❌ 不需要单个附件 / Send 文件上限100 MB软限制可调25 MiBCloudflare KV 硬限制免费额度10 GB 存储1 GB 存储适合人群正式部署、大文件需求快速体验、小文件 小技巧即使同时绑定了 R2 和 KV服务端也会优先使用 R2见 blob-store.ts 中的getBlobStorageKind。KV 模式下载超限时会直接返回 413并在界面上提示文件过大。附件上传下载一次性令牌如何保护你的文件附件的上传和下载都不走登录态接口直接读写文件的方式而是采用短效 JWT 令牌 公开端点的设计核心逻辑在 attachments.ts。上传三步走先领令牌再直传创建元数据客户端先提交文件名和大小服务端生成附件记录并签发一个上传令牌返回一个带token参数的直传 URL见 direct-upload.ts 中的buildDirectUploadUrl凭令牌直传客户端拿着令牌把文件直接 POST 到公开端点服务端校验令牌归属是否匹配用户、密码条目、附件 ID 三重比对写入对象存储文件存入 R2/KV对象路径固定为{cipherId}/{attachmentId}并自动触发多端同步通知。这样做的好处是上传凭证只能用一次、且与具体文件一一绑定泄露也无法用于其他文件。下载更严格5 分钟有效 只能用一次当你请求附件下载信息时服务端签发一个有效期仅 300 秒5 分钟的下载令牌配置见 limits.ts 中的fileDownloadTokenTtlSeconds。下载请求还要经过一道更狠的关卡令牌带唯一 IDjti首次消费后记入数据库第二次使用同一令牌直接返回 401consumeAttachmentDownloadToken响应头强制X-Content-Type-Options: nosniff并对 Content-Type 做清洗防止浏览器把下载内容当成脚本执行。换句话说链接截屏发给别人没用——它 5 分钟后过期用过一次即作废。Send 文件分享大小上限、自动删除与访问控制Send 的创建、校验逻辑分布在 sends-private.ts自己的 Send和 sends-public.ts他人访问你的 Send共享规则在 sends-shared.ts。硬性上限清单创建前先看这里限制项数值说明文件大小100 MBR2/ 25 MiBKV超限直接返回 400/413删除日期最多距当前31 天不能无限期保留分享密码PBKDF2 10 万次迭代加盐哈希服务端不存明文密码访问次数可设maxAccessCount达到上限后链接立即失效 每个文件 Send 都必须设置删除日期——到期后链接自动 404文件随之从对象存储中清除这是到期即焚的核心保障。分享链接背后的三层防护AccessId 混淆链接里不是明文的 Send ID而是 UUID 的 Base64 编码形式无法简单枚举遍历密码限流带密码的 Send 会按客户端 IP 记录失败次数连续猜错会触发临时锁定429成功一次则清零计数短效令牌下载文件下载同样走令牌换 URL 的流程访问令牌有效期 300 秒sendAccessTokenTtlSeconds每次访问还会累加accessCount并实时通知创建者。⚠️ 注意NodeWarden 目前不支持邮箱验证Email Auth类型的 Send请求该方式会返回 501。分享安全主要依赖密码 删除日期 访问次数组合。安全使用建议清单✅ 正式部署优先选 R2 模式享受 100 MB 单文件上限与更大免费空间✅ 分享文件时必设密码 最短可行删除日期 访问次数上限三管齐下✅ 删除密码条目时其下所有附件会并发批量清理并发度 4见 attachments.ts 的deleteAllAttachmentsForCiphers不用担心存储残留✅ 所有 Send 的创建/删除/改密操作都会写入审计日志可在管理后台的日志中心回查。相关文件速查附件接口src/handlers/attachments.tsSend 共享规则src/handlers/sends-shared.ts对象存储抽象src/services/blob-store.ts直传与令牌 URL 构造src/utils/direct-upload.ts大小与时效配置src/config/limits.tsR2 部署配置wrangler.toml / KV 部署配置wrangler.kv.toml【免费下载链接】nodewardenBitwarden-compatible server running on Cloudflare Workers项目地址: https://gitcode.com/gh_mirrors/no/nodewarden创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考