传统剪贴板以明文存储您的数据。服务器管理员、黑客或任何拥有数据库访问权限的人都能读取您分享的一切。
CloakBin 与众不同。
┌─────────────────────────────────────────────────────────────────┐
│ 零知识加密流程 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 您的浏览器 服务器 数据库 │
│ ──────────── ────── ──────── │
│ │
│ "secret msg" │
│ │ │
│ ▼ │
│ ┌─────────┐ │
│ │ 本地加密 │ AES-256-GCM │
│ │ (浏览器) │ │
│ └────┬────┘ │
│ │ │
│ ▼ │
│ "a3f8b2c1..." ───────► "a3f8b2c1..." ───► "a3f8b2c1..." │
│ (密文) (密文) (密文) │
│ │
│ 密钥保存在 URL 片段 (#) 中 │
│ example.com/p/abc#KEY ◄── 从未发送到服务器 │
│ │
└─────────────────────────────────────────────────────────────────┘
加密密钥存在于 URL 片段 (#) 中,浏览器不会将其发送到服务器。即使我们的数据库被攻破,攻击者也只能获得无意义的密文。
| 组件 | 能看见的内容 |
|---|---|
| 您的浏览器 | ✅ 明文(您掌控) |
| 网络/ISP | 🔒 仅加密密文 |
| CloakBin 服务器 | 🔒 仅加密密文 |
| 数据库 | 🔒 仅加密密文 |
| URL 接收者 | ✅ 明文(持有密钥) |
密码学细节:
crypto.getRandomValues)请勿仅听信我们——该保证可在您的浏览器中验证:
POST 请求,查看其请求体。您将只看到密文和盐值——绝不会看到您的明文,也绝不会看到加密密钥。# 之后的部分(URL 片段)。根据 Web 标准,浏览器绝不会将片段发送到服务器——它保留在客户端。#fragment 中的密钥。由于密钥只存在于片段和接收者的浏览器中,服务器(及其数据库以及网络上的任何人)只能看到加密后的数据块。不存在任何能够读取您内容的服务器端代码路径——即使收到传票,也只能交出密文。
# 克隆
git clone https://github.com/Ishannaik/CloakBin.git
cd CloakBin
# 安装
pnpm install
# 配置
cp .env.example .env
# 编辑 .env,填入您的 MongoDB URI
# 运行
pnpm dev
MONGODB_URI=mongodb://localhost:27017/cloakbin
ADMIN_USER=admin
ADMIN_PASS=your-secure-password
src/
├── lib/
│ ├── components/ # UI 组件
│ ├── db/ # 数据库适配器
│ └── crypto.ts # 加密(AES-256-GCM, PBKDF2)
├── routes/
│ ├── +page.svelte # 创建剪贴板
│ ├── p/[id]/ # 查看剪贴板
│ ├── api/ # REST 端点
│ └── admin/ # 管理面板
└── app.html
CloakBin 完全开源。部署您自己的实例:
欢迎 PR!请:
GNU Affero General Public License v3.0 (AGPL-3.0) - 参见 LICENSE
如果您将 CloakBin 的修改版本作为网络服务运行,AGPL §13 要求您向用户提供修改后的源代码。
您的秘密值得真正的隐私。
由 Ishan Naik 制作
| 层 | 技术 |
|---|
| 框架 | SvelteKit 2.0, Svelte 5 |
| 语言 | TypeScript |
| 样式 | Tailwind CSS 4.0 |
| 数据库 | MongoDB |
| 加密 | Web Crypto API |
| 编辑器 | CodeMirror 6 |
| 托管 | Vercel |