1 điểm bởi imjlk 2026-03-11 | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

Khi thử gắn Better Auth trên Cloudflare Pages, tôi liên tục gặp lỗi CPU time limit. Vì vậy tôi đã làm thử cùng với Codex.

Cloudflare cho phép các Worker giao tiếp trực tiếp với nhau mà không cần URL public thông qua Service Binding và RPC WorkerEntrypoint, nên tôi thấy các chức năng mang tính hạ tầng nội bộ sẽ phù hợp với hướng này hơn. Vì thế tôi đã phác thảo một mẫu Worker private password hasher có thể dùng trong logic xác thực như Better Auth.

Cấu trúc khá đơn giản. Worker caller phụ trách auth sẽ gắn Worker hasher bằng private service binding, còn việc hash và verify thực tế chỉ được gọi qua các phương thức RPC như hashPassword() / verifyPassword(). HTTP public chỉ giữ ở mức tối thiểu như GET / cho metadata/health, và lấy việc không phơi bày bản thân password hashing như một endpoint ra bên ngoài làm tiền đề mặc định. Nói cách khác, hướng này gần với việc “tách password hashing thành một thành phần Worker nội bộ trong Cloudflare” hơn là “công khai một hash API”.

Phần triển khai đặt một Rust/Wasm kernel bên trên TypeScript Worker shell (được quyết định sau một bài benchmark đơn giản để so với phương án thuần Rust), và thuật toán hash lấy Argon2id làm chuẩn. Trọng tâm của mẫu này không phải là giới thiệu bản thân Argon2id, mà là cách tách ranh giới vận hành cho password hashing trong Cloudflare Workers. Worker của ứng dụng tập trung vào luồng xác thực và quản lý session, còn hash/verify sẽ do Worker hasher riêng đảm nhiệm.

Tôi cũng cân nhắc cả luồng dùng cùng Better Auth. Better Auth mặc định dùng scrypt nhưng cho phép tùy biến password hash/verify, nên có thể nối theo kiểu Worker caller gọi Worker hasher. Ngoài ra, ngay cả khi tài khoản hiện có đang dùng định dạng legacy scrypt, vẫn có thể giả định một luồng xác minh tại thời điểm đăng nhập rồi nâng dần sang hash Argon2id mới bằng verifyAndMaybeRehash(). Tức là thay vì buộc toàn bộ người dùng cũ đổi mật khẩu ngay lập tức, mẫu này được xây dựng với lộ trình migration để dần chuyển sang preset mạnh hơn theo đúng lưu lượng đăng nhập thực tế.

Ở góc độ vận hành, tôi cũng phản ánh việc khó có thể nhìn Cloudflare Free và Paid bằng cùng một tiêu chuẩn. Với Free, giới hạn CPU nhỏ nên có thể khó dùng nguyên cấu hình mặc định của Argon2id, vì vậy tôi nghĩ tới cấu hình có preset như standard-2026q1 và tách riêng free-tier-fallback-2026q1. Tuy nhiên preset fallback chỉ là phương án thỏa hiệp vận hành có tính đến giới hạn của nền tảng, chứ không phải giá trị được giới thiệu như một baseline bảo mật. Ngay cả khi bắt đầu từ Free, tài liệu và ví dụ vẫn kèm theo luồng gradual migration để sau này khi nâng lên Paid có thể rehash sang preset Argon2id mạnh hơn.

Tóm lại, repository này gần với câu hỏi “nên tách password hashing theo ranh giới nào để vận hành trong Cloudflare Workers” hơn là “tính password hash trong Cloudflare Workers như thế nào”. Nếu bạn đang chạy Better Auth trên Workers và muốn tách gánh nặng của phần hash, không muốn mở một public hash endpoint, hoặc muốn chuyển dần các tài khoản legacy scrypt sang Argon2id, thì hy vọng đây sẽ là một điểm khởi đầu hữu ích.

repo: https://github.com/imjlk/cloudflare-auth-hasher-template
benchmark: https://github.com/imjlk/cloudflare-auth-hasher-template/tree/codex/benchmark-workspace
deploy: [Liên kết Deploy to Cloudflare] (Bạn có thể triển khai ngay sau khi đăng nhập vào tài khoản Cloudflare.)

Chưa có bình luận nào.

Chưa có bình luận nào.