Bảo mật
Bảo mật nằm ở hạ tầng, không nằm ở lời hứa
Trang này chỉ liệt kê những cơ chế đang chạy trong mã nguồn hôm nay. Phần chưa có nằm ở cuối trang và được viết thẳng.
Chưa có
Những điều 9Link chưa có
Liệt kê ở đây để bạn không phải đoán, và để chúng tôi không phải nói vòng.
- Chưa có chứng nhận SOC 2 hay ISO 27001.
- Chưa có báo cáo kiểm thử xâm nhập độc lập.
- Chưa có chương trình thưởng lỗi bảo mật.
- Chưa công bố cam kết mức dịch vụ hay số liệu thời gian hoạt động.
- Chưa có kênh báo lỗi bảo mật chuyên trách; khi có, địa chỉ sẽ xuất hiện ở chân trang.
- Chưa có mã hoá khi lưu trữ do 9Link tự thêm: điều đó phụ thuộc vào nơi bạn đặt cơ sở dữ liệu.
- Tách theo vùng ở lớp dữ liệu cá nhân chỉ nói về NƠI LƯU, và chỉ đúng khi bản đang chạy có cấu hình cụm: yêu cầu vẫn có thể được xử lý bởi máy chủ ngoài vùng, còn hàng đợi, bộ nhớ đệm và webhook gửi đi thì chưa tách theo vùng ở bất kỳ bản nào.
Đường link
Lá chắn đặt ngay trên đường chuyển hướng
Mọi cơ chế dưới đây chạy ở lớp Edge, trước khi người bấm tới đích — và không cơ chế nào thêm một lượt gọi mạng vào cú chuyển hướng.
Chặn phishing bằng cách quét lúc ghi
Đích của link được quét khi tạo và khi sửa: danh sách chặn nội bộ là mặc định, Google Safe Browsing bật thêm khi bạn cấp khoá của mình. Link bị gắn cờ sẽ bị Edge từ chối, nên không có lượt quét trực tuyến nào nằm trên đường chuyển hướng.
Nơi đọc được trong mã:apps/web/lib/govern/url-safety.tsMật khẩu mở link
Băm bằng PBKDF2-SHA256 một trăm nghìn vòng qua Web Crypto, muối ngẫu nhiên riêng cho từng link, đối chiếu theo thời gian hằng. Mật khẩu gốc không được lưu và không vào nhật ký. Đây là mật khẩu để mở link, tách hẳn khỏi mật khẩu tài khoản.
Nơi đọc được trong mã:apps/web/lib/govern/password.tsHạn dùng và trần lượt bấm
Ngày hết hạn và trần lượt bấm được áp ngay tại Edge; vượt trần thì địa chỉ trả về mã lỗi thay vì chuyển hướng tiếp.
Nơi đọc được trong mã:apps/web/lib/govern/click-limit.tsTrang bio cũng bị soi
Khối nội dung của trang bio được quét lúc lưu, chỉ nhận danh sách kiểu khối cho phép và không nhận HTML tự do; trang bị gắn cờ sẽ không được Edge trả ra.
Nơi đọc được trong mã:apps/web/lib/publish/safety.tsDữ liệu
Đo được mà không cần dữ liệu định danh
Một sự kiện của 9Link mô tả bối cảnh, không mô tả con người.
Sự kiện không mang dữ liệu cá nhân thô
Bản ghi gồm quốc gia, thiết bị, hệ điều hành, trình duyệt, nguồn giới thiệu đã cắt tham số truy vấn, và một chuỗi băm của user-agent. Không có địa chỉ IP, không có email, không có user-agent nguyên văn.
Nơi đọc được trong mã:apps/web/lib/events.tsChuỗi băm xoay theo ngày
Chuỗi băm user-agent trộn thêm khoá bí mật của máy chủ và đổi theo từng ngày, nên không nối được hồ sơ hành vi qua nhiều ngày. Nó dùng để gộp trùng trong ngày, không phải để chống truy nguyên.
Nơi đọc được trong mã:apps/web/lib/events.test.tsNhật ký kiểm toán để riêng
Hành động nhạy cảm — đổi vai trò, phát và thu khoá API, gắn cờ link, đổi vùng dữ liệu — ghi vào cơ sở dữ liệu quan hệ theo từng workspace, tách khỏi kho sự kiện hành vi.
Nơi đọc được trong mã:apps/web/lib/govern/audit.tsMột kho, không kho song song
Lượt bấm, lượt quét mã QR, lượt xem bio, chuyển đổi và doanh thu nằm chung một bảng sự kiện. Không có bản sao dữ liệu chạy song song để rò rỉ hay để lệch số.
Nơi đọc được trong mã:apps/web/lib/analytics.tsTài khoản
Ai vào được, và vào được tới đâu
Ranh giới giữa các workspace được kiểm ở phía máy chủ, không phải bằng cách giấu nút bấm.
Bắt buộc xác minh email
Tài khoản chưa xác minh email thì không đăng nhập được. Đây là thiết lập cứng trong mã, không phải một ô tuỳ chọn.
Nơi đọc được trong mã:apps/web/lib/auth/auth.tsPhân quyền theo vai trò
Bốn vai trò chủ sở hữu, quản trị, thành viên và người xem; mọi thao tác ghi đều đi qua cổng quyền phía máy chủ. Workspace này không đọc và không ghi được tài nguyên của workspace kia.
Nơi đọc được trong mã:apps/web/lib/authz/Khoá API gắn cứng workspace
Khoá REST thuộc về đúng một workspace, mang phạm vi hẹp theo từng nhóm tài nguyên, chỉ hiển thị nguyên văn một lần lúc tạo, lưu ở dạng băm và thu hồi được bất cứ lúc nào.
Nơi đọc được trong mã:apps/web/lib/api/keys/Chống lạm dụng
Giới hạn đặt đúng chỗ
Chặn kẻ lạm dụng mà không làm chậm người dùng thật.
Giới hạn tần suất, khoá chặt ở hai biên
Hầu hết biên ghi ưu tiên khả dụng khi bộ đệm gặp sự cố. Riêng đăng nhập và việc phát hay thu khoá API thì làm ngược lại: bộ đệm lỗi là từ chối, để không mất lá chắn dò mật khẩu đúng lúc hệ thống yếu nhất.
Nơi đọc được trong mã:apps/web/lib/govern/rate-limit.tsĐường chuyển hướng không bị bóp
Không có giới hạn tần suất nào đặt lên cú chuyển hướng. Lạm dụng link bị chặn bằng cờ an toàn và trần lượt bấm, không bằng cách làm chậm người bấm.
Nơi đọc được trong mã:apps/web/app/[key]/route.tsTiêu đề an ninh cho trang công khai
Trang công khai gửi kèm chính sách cấm nhúng trong khung, cấm đoán kiểu tệp và siết thông tin nguồn giới thiệu. Trang bio và trang thanh toán mang chính sách nội dung riêng, chặt hơn.
Nơi đọc được trong mã:apps/web/next.config.mjsVùng dữ liệu
Nói đúng phần đang chạy
Mỗi workspace chọn vùng US, UAE hoặc EU. Với lớp sự kiện, lựa chọn đó là một đường dữ liệu thật: khi bản đang chạy có cấu hình nhiều cụm, sự kiện của workspace được ghi và đọc ở cụm của vùng đó. Đổi vùng có hiệu lực ngay; dữ liệu đã ghi ở lại cụm cũ, không di trú.
Phạm vi PII của bản đang chạy này dừng ở lớp sự kiện: cấu hình link, tài khoản người dùng và phiên đăng nhập vẫn nằm chung một cơ sở dữ liệu, không tách theo vùng. Bản thương mại có cấu hình cụm Postgres theo vùng, nhưng bản bạn đang đọc KHÔNG bật nó — nếu bạn cần cả dữ liệu cá nhân theo vùng thì hôm nay cách chắc chắn vẫn là tự vận hành trong vùng của bạn.
Bản 9Link bạn đang đọc chạy MỘT cụm sự kiện: mọi vùng hiện ghi vào cùng cụm đó — kể cả UAE và EU. Bản mở và bản tự vận hành luôn một cụm; cấu hình nhiều cụm thuộc bản thương mại.
Nơi đọc được trong mã:apps/web/lib/govern/residency.tsNơi đọc được trong mã: apps/web/lib/analytics-fanout.tsNơi đọc được trong mã: apps/web/lib/postgres-clusters-declared.tsCâu hỏi thường gặp
Bốn câu hay được hỏi nhất khi đội an ninh của khách hàng đọc trang này.
9Link có nhìn thấy đích của link không?
Sự kiện có theo dõi được một người cụ thể không?
Mật khẩu link mạnh tới đâu?
Tôi muốn tự kiểm chứng thì làm thế nào?
Đừng tin, hãy kiểm chứng
Tự vận hành trên hạ tầng của bạn, hoặc đọc phần ranh giới mã nguồn mở trước.