Bảo mật
Cách dịch vụ được xây dựng để lời hứa riêng tư là tính chất của kiến trúc, chứ không chỉ là một lời hứa.
Mô hình mối đe doạ
Dịch vụ xử lý mã nguồn — thứ mặc định nhạy cảm hơn bất cứ gì chúng tôi lưu trữ. Phản hồi thiết kế là không bao giờ giữ nó:
- Không có đường tải lên. Không có endpoint nào nhận nội dung tệp. Việc phân tích chạy bằng WebAssembly ngay trong tab của người dùng.
- Không kết xuất phía server cho dữ liệu người dùng. Tài liệu sinh ra được dựng trong trình duyệt và không đi qua hạ tầng của chúng tôi.
- Không origin bên thứ ba trong Content-Security-Policy. Một dependency bị thoả hiệp không thể âm thầm rút dữ liệu, vì không có chỗ nào để gửi.
- Kết xuất có escape. Đường dẫn tệp đến từ đĩa của người dùng, và một repo có thể chứa tệp tên
<img onerror=…>.md. Mọi chuỗi từ người dùng đều được escape trước khi tới DOM.
Biện pháp kiểm soát
- Content-Security-Policy với
default-src 'self',object-src 'none',base-uri 'self',form-action 'none',frame-ancestors 'none'. Đặt hai lần — header HTTP và meta tag — để vẫn còn trên các host bỏ qua_headers. X-Content-Type-Options: nosniff,Referrer-Policy: strict-origin-when-cross-origin,Cross-Origin-Opener-Policy: same-origin, cùngPermissions-Policytắt camera, micro, định vị, browsing-topics và interest-cohort.- TLS do Cloudflare bắt buộc trên mọi request.
- Giới hạn tần suất ở edge, khoá theo digest của địa chỉ IP và số hệ tự trị thay vì chính địa chỉ.
- Audit dependency trong CI; hai dependency runtime (
web-tree-sitter,fflate) cùngzodmà bộ phân tích vendored kéo theo. - Test kiểm chứng build: fail nếu bundle triển khai tham chiếu asset không tồn tại, hoặc meta CSP bị bóc.
Hỗ trợ trình duyệt
Feature detection, không bao giờ sniff user-agent. Sniffing là cách bạn chặn một trình duyệt mình chưa từng nghe tên.
| Trình duyệt | Hạng | Ghi chú |
|---|---|---|
| Chrome / Edge / Opera | đầy đủ | Chọn thư mục native, lưu vào thư mục, chia sẻ. |
| Chromium-based (Brave, Vivaldi, Arc) | đầy đủ | Cùng engine; trình chặn quảng cáo có thể ẩn các liên kết hỗ trợ. |
| Firefox | hỗ trợ | Chọn qua input tệp; xuất bằng tải về và sao chép. |
| Safari 16.4+ | hỗ trợ | Chọn qua input tệp; tải về, sao chép và chia sẻ. |
| Samsung Internet / mobile Chrome | hỗ trợ | Chia sẻ gửi tệp thẳng vào ứng dụng AI. |
| Anything without WebAssembly | không hỗ trợ | Ứng dụng báo rõ ngay khi mở thay vì lỗi trống trơn. |
Báo lỗ hổng
Email [email protected]. Chúng tôi cố gắng xác nhận trong năm ngày làm việc.
Không có bug bounty và chúng tôi không thể trả thưởng. Chúng tôi sẽ ghi tên bạn trong changelog nếu bạn muốn, và không truy cứu pháp lý nghiên cứu thiện chí không gây hại cho Dịch vụ và người dùng.
Xin đừng test trên phiên của người dùng khác. Vì Dịch vụ hoàn toàn client-side, gần như mọi thứ có thể test cục bộ trên build của bạn.