envshare.dev là một dự án nguồn mở cho phép các nhà phát triển chia sẻ các biến môi trường một cách an toàn với bất kỳ ai. Bạn có thể tải lên .env của mình tệp hoặc nhập các biến môi trường của bạn và chúng sẽ được mã hóa trước khi được lưu trữ trong cơ sở dữ liệu. Sau đó, bạn có thể chia sẻ liên kết với bất kỳ ai và họ sẽ có thể giải mã các biến môi trường.
EnvShare được sử dụng miễn phí và là nguồn mở. Bạn có thể tìm thấy mã trên GitHub.
Tính năng
- Các liên kết có thể chia sẻ: Chia sẻ các biến môi trường của bạn một cách an toàn bằng cách gửi liên kết
- Mã hóa đầu cuối: Mã hóa AES được sử dụng để mã hóa dữ liệu của bạn trước khi lưu trữ
- Giới hạn số lần đọc: Giới hạn số lần liên kết có thể được đọc và mã hóa
- Tự động hết hạn: Tự động hết hạn liên kết và xóa dữ liệu sau một thời gian nhất định
Cách thức hoạt động
Mỗi khi bạn muốn chia sẻ các biến môi trường của mình, một khóa mã hóa ngẫu nhiên mới sẽ được tạo trong trình duyệt. Dữ liệu nhạy cảm của bạn được mã hóa bằng AES và sau đó được lưu trữ trong Redis.
Sau đó, một id tài liệu duy nhất được kết hợp với khóa mã hóa để tạo thành một liên kết có thể chia sẻ mà bạn có thể sử dụng để truy cập và giải mã dữ liệu của mình.

Dữ liệu
EnvShare sử dụng Redis để lưu trữ các biến môi trường được mã hóa. Redis rất tuyệt vời vì nó có thể được sử dụng như một kho lưu trữ khóa-giá trị nhanh, nhưng cũng cung cấp các cấu trúc dữ liệu phức tạp hơn như danh sách, bộ và hàm băm. Nó cũng tự động loại bỏ các khóa đã hết hạn, điều này hoàn hảo cho trường hợp sử dụng của chúng tôi.
Dữ liệu được lưu trữ trong hàm băm Redis có cấu trúc sau:
{
"remainingReads": 20, // Optional, the number of times the link can be read
"encrypted": "...", // The encrypted environment variables
"iv": "..." // The initialization vector for AES-CBC
}
Việc sử dụng hàm băm cho phép chúng tôi lưu trữ một số siêu dữ liệu cùng với dữ liệu được mã hóa và cũng có thể giảm dần số lần đọc còn lại bằng HINCRBY .Redis cực kỳ linh hoạt và cho phép lặp lại và triển khai nhanh chóng các ý tưởng mới. Ví dụ:trong tương lai, chúng tôi có thể muốn thêm một cái gì đó như nhật ký truy cập. Một bộ được sắp xếp sẽ rất phù hợp cho việc này.
Vấn đề duy nhất là Redis thường chỉ khả dụng trên TCP, không hoạt động trong các hàm biên của chúng tôi. May mắn thay, Upstash cung cấp API Redis có thể được sử dụng để truy cập Redis qua HTTP. Đây chính xác là những gì chúng tôi cần cho EnvShare.Upstash cung cấp cơ sở dữ liệu Redis miễn phí với 10.000 yêu cầu mỗi ngày. Điều này là quá đủ đối với chúng tôi và nếu bạn muốn tự lưu trữ EnvShare, bạn có thể tạo một tài khoản miễn phí tại đây. Hãy xem hướng dẫn tự lưu trữ tại đây
Việc thiết lập Redis trong các hàm biên của chúng tôi rất dễ dàng. Chúng ta chỉ cần tạo cơ sở dữ liệu và cài đặt @upstash/redis .
Trong hàm Edge, chúng ta có thể lưu trữ dữ liệu:
/api/share.tsimport { Redis } from "@upstash/redis";
const redis = new Redis({
url: "..." // UPSTASH_REDIS_REST_URL
token: "..." // UPSTASH_REDIS_REST_TOKEN
});
await redis.hset(key, {
remainingReads: 20,
encrypted: "...",
iv: "...",
}); Kết thúc
Cảm ơn đã đọc! EnvShare là một dự án thú vị mà tôi xây dựng để cho thấy việc bắt đầu với Next.js và Upstash Redis dễ dàng như thế nào. Tôi hy vọng bạn thích nó và thấy nó hữu ích. Nếu bạn có bất kỳ câu hỏi hoặc phản hồi nào, vui lòng liên hệ với tôi trên Twitter.
Các liên kết liên quan:
- EnvChia sẻ
- GitHub
- Hướng dẫn triển khai