Bảo mật

Mô hình bảo mật của chúng tôi trong một câu: không có gì trên máy chủ để tấn công. Mọi thứ dưới đây đều có thể kiểm chứng từ DevTools của bạn.

Kiến trúc

Abundera QR là ứng dụng trang đơn tĩnh được phục vụ từ Cloudflare Pages. Không có máy chủ ứng dụng, cơ sở dữ liệu, tài khoản người dùng, xác thực, điểm cuối API hay đường dẫn mã backend xử lý dữ liệu người dùng. Mọi thao tác tạo QR, mã hóa, quét và kết xuất đều chạy hoàn toàn trong trình duyệt của bạn.

Mô hình mối đe dọa

Vì chúng tôi không thu thập, lưu trữ hay truyền dữ liệu người dùng, các mối đe dọa web phổ biến nhất, đánh cắp thông tin xác thực, vi phạm cơ sở dữ liệu, chiếm quyền phiên, tiêm lệnh phía máy chủ, không áp dụng. Bề mặt tấn công còn lại là gói tài sản tĩnh (HTML, CSS, JavaScript) được phục vụ từ nguồn gốc của chúng tôi. Chúng tôi thiết kế với các giả định:

Chính sách bảo mật nội dung, theo chỉ thị

Chính sách hiện tại (xác minh trong tiêu đề Phản hồi cho bất kỳ yêu cầu nào):

Content-Security-Policy:
  default-src 'self';
  script-src 'self' 'wasm-unsafe-eval';
  worker-src 'self' blob:;
  style-src 'self' 'unsafe-inline';
  font-src 'self';
  img-src 'self' data: blob: https:;
  connect-src 'self' https:;
  frame-ancestors 'none';
  base-uri 'self';
  form-action 'self'

Mỗi chỉ thị cho phép chúng tôi làm gì và đánh đổi ở đâu:

Các chính sách CSP khác nhau áp dụng cho /bio/* (nới lỏng img-src cho avatar do người dùng cung cấp) và /embed/* (nới lỏng frame-ancestors cho nhúng có chủ ý). Cả hai đều được ghi lại trong site/_headers.

Tiêu đề truyền tải và đóng khung

Service worker

Service worker của chúng tôi (site/sw.js) chỉ lưu vào cache các tài sản same-origin. Trình xử lý fetch từ chối rõ ràng các yêu cầu cross-origin và các phương thức không phải GET, bạn có thể đọc logic trên GitHub. Các lần ghi vào cache được bọc trong event.waitUntil() để chúng không thể bị bỏ qua giữa điều hướng.

Làm sạch đầu vào

Mọi đường dẫn kết xuất chấp nhận đầu vào của người dùng đều coi nó là văn bản không tin cậy:

Tải hình ảnh cross-origin

Khi người dùng dán URL https: làm ảnh vCard hoặc logo, trình duyệt tải về theo CORS và danh sách cho phép img-src của CSP. Hình ảnh được kết xuất vào canvas. Nó không bao giờ trở thành DOM trực tiếp, không bao giờ chạy như mã, và không bao giờ đến nguồn gốc của chúng tôi, tải về là trình duyệt → hình ảnh từ xa, và kết quả được vẽ phía client. Kẻ tấn công kiểm soát URL hình ảnh từ xa có thể theo dõi rằng URL đã được tải (một dòng log trên máy chủ của họ) nhưng không thể rò rỉ bất cứ điều gì từ trang của chúng tôi.

Tính toàn vẹn tài nguyên con (SRI)

Tất cả JavaScript và CSS chúng tôi cung cấp đều là same-origin. Chúng tôi không tải script hoặc stylesheet của bên thứ ba, vì vậy hash SRI không áp dụng. Nếu chúng tôi từng tải tài sản của bên thứ ba, chúng tôi sẽ thêm thuộc tính SRI integrity vào đó và ghi lại quy trình cập nhật hash trong trang này.

Báo cáo lỗ hổng

Nếu bạn phát hiện vấn đề bảo mật ảnh hưởng đến Abundera QR, trong mã của chúng tôi, triển khai của chúng tôi, hoặc trong một phụ thuộc mà chúng tôi cung cấp, vui lòng báo cáo riêng tư đến security@abundera.ai. Chúng tôi hướng đến việc phân loại trong vòng 72 giờ. Bạn cũng có thể liên hệ qua thông tin liên lạc trong file /.well-known/security.txt của chúng tôi.

Chưa có chương trình thưởng lỗi

Hiện tại chúng tôi không cung cấp tiền thưởng, nhưng mọi báo cáo hợp lệ được xác nhận đều nhận được ghi nhận trong changelog và lời cảm ơn công khai của chúng tôi.

Xác minh những điều trên

Mọi tuyên bố trên trang này đều có thể kiểm chứng từ DevTools của trình duyệt mà không cần tin tưởng chúng tôi:

Liên hệ

Báo cáo bảo mật: security@abundera.ai

Cập nhật lần cuối: 2026-04-19. Lần xem xét tiếp theo: 2026-07-19.