Chuyển đến nội dung chính

Bạn dùng TablePro hằng ngày? License thêm tính năng trả phí và nuôi bản phát hành tiếp theo. Bạn dùng hằng ngày? Mua license

Bảo mật

TablePro lưu thông tin đăng nhập của bạn ở đâu, ứng dụng gửi đi những gì, được ký và cập nhật ra sao, và mỗi lớp bảo vệ dừng lại ở đâu.

Thông tin đăng nhập được lưu ở đâu

Trên Mac

Mật khẩu, passphrase của key, API key của nhà cung cấp AI và license key được lưu trong Keychain của macOS. Danh sách connection trên đĩa không chứa mật khẩu, còn SSH key vẫn là một file trên đĩa.

Trên iPhone và iPad

Mật khẩu và SSH key dán vào được lưu trong Keychain.

iCloud Sync

iCloud Sync tắt cho tới khi bạn bật. Dữ liệu đồng bộ được lưu vào một cơ sở dữ liệu riêng tư trong tài khoản iCloud của chính bạn, nơi TablePro không đọc được, và không chứa mật khẩu. Mật khẩu chỉ được đồng bộ nếu bạn bật thêm mục Mật khẩu (Passwords) trên Mac hoặc Đồng bộ mật khẩu (Sync Passwords) trên iPhone và iPad, và khi đó đi qua iCloud Keychain.

TablePro nhận được gì

Các query bạn chạy, kết quả trả về và mật khẩu của bạn không được gửi cho TablePro. Ngoại lệ là Team Library mà bạn chủ động xuất bản lên: nơi này nhận cấu hình connection và query đã lưu, không bao giờ gồm mật khẩu.

Giới hạn nên biết

  • Trên Mac, tính năng đồng bộ mật khẩu còn mang theo API key của nhà cung cấp AI và license key.
  • Nguồn mật khẩu như 1Password hay một lệnh shell sẽ chạy một chương trình trên máy Mac mỗi lần bạn kết nối.

Những gì rời khỏi thiết bị của bạn

Tới máy chủ và nhà cung cấp của bạn

Query và kết quả đi giữa ứng dụng và máy chủ cơ sở dữ liệu của chính bạn, không bao giờ qua TablePro. Yêu cầu AI đi thẳng tới nhà cung cấp AI mà bạn thêm vào.

Tới TablePro

Khi chưa kích hoạt license, yêu cầu duy nhất mà ứng dụng cho Mac gửi tới TablePro là một báo cáo sử dụng mỗi ngày, bật sẵn và có thể tắt trong Cài đặt. Trên iPhone và iPad, không có gì được gửi tới TablePro trừ khi bạn bật Chia sẻ dữ liệu sử dụng (Share Usage Data). Báo cáo không bao giờ có hostname, username, mật khẩu, query hay dữ liệu trong các dòng, và cả hai ứng dụng đều không chứa công cụ báo lỗi (crash reporter) hay thư viện phân tích của bên thứ ba.

Giới hạn nên biết

  • Ứng dụng cho Mac gửi báo cáo sử dụng đầu tiên mà không hỏi trước, và máy chủ của chúng tôi lưu địa chỉ IP của mọi báo cáo và mọi lần kiểm tra license.

Ứng dụng đến tay bạn như thế nào

Được ký và notarize

Các bản build cho Mac được ký bằng Developer ID, dùng Hardened Runtime và được Apple notarize. Các file .dmg nằm trên GitHub Releases, mỗi file có một checksum SHA-256. Homebrew cask tải về đúng file đó và kiểm tra SHA-256 của nó.

Cập nhật

Ứng dụng cho Mac cập nhật qua Sparkle và kiểm tra chữ ký EdDSA của từng bản cập nhật bằng public key có sẵn trong ứng dụng trước khi cài. Bước kiểm tra này không tắt được. Tự động cập nhật thì tắt được, trong Cài đặt hoặc bằng configuration profile.

Plugin driver

Driver không có sẵn trong ứng dụng cho Mac được tải về từ GitHub. Mỗi driver phải khớp với SHA-256 trong plugin registry và có chữ ký mã (code signature) hợp lệ: của chính TablePro, hoặc Developer ID của một nhà phát triển khác sau khi bạn đồng ý tin tưởng đích danh nhà phát triển đó.

iPhone và iPad

Ứng dụng cho iPhone và iPad có trên App Store, và App Store cũng phân phối các bản cập nhật của nó. Driver được tích hợp sẵn, và ứng dụng không tải về plugin nào.

Giới hạn nên biết

  • Ứng dụng cho Mac không dùng App Sandbox của macOS: nó chạy với quyền truy cập file và mạng của tài khoản người dùng của bạn.
  • Plugin driver chạy như một phần của TablePro và đọc được thông tin đăng nhập của mọi connection bạn mở.

Điều gì bảo vệ cơ sở dữ liệu khỏi thao tác nhầm

Các mức Safe Mode

Mỗi connection có một mức Safe Mode: Silent, Alert, Alert (Full), Safe Mode, Safe Mode (Full) và Read-Only. Alert hỏi lại trước khi chạy câu lệnh ghi, hai mức Safe Mode và Safe Mode (Full) còn yêu cầu Touch ID hoặc mật khẩu máy Mac, các mức có hậu tố (Full) hỏi cả trước câu lệnh đọc, còn Read-Only từ chối câu lệnh ghi. Tổ chức của bạn có thể áp một mức tối thiểu cho các máy Mac qua configuration profile. Trên iPhone và iPad, các mức là Off, Confirm Writes và Read-Only.

Câu lệnh phá hủy

Ở mọi mức trên Mac, DROP, TRUNCATE và DELETE không có WHERE luôn dừng lại để hỏi trước, kèm toàn bộ câu lệnh.

Giới hạn nên biết

  • Safe Mode chạy bên trong TablePro và giúp tránh thao tác nhầm. Đây không phải sandbox hay hệ thống phân quyền: với quy tắc bắt buộc phải được tuân thủ, hãy dùng quyền của chính cơ sở dữ liệu.
  • Connection mới bắt đầu ở mức Silent, câu lệnh chạy ngay như bạn viết, kể cả UPDATE không có WHERE.
  • Ở chế độ Edit và Agent của chat, trợ lý AI chạy được câu lệnh, và ở mức Silent câu lệnh ghi của nó chạy luôn mà không hỏi. Agent mode chiếm cả cửa sổ giữ connection ở mức Alert hoặc nghiêm ngặt hơn; đây chỉ là lời nhắc, không phải cơ chế khóa.

MCP server

Chỉ chạy cục bộ

MCP server chỉ có trong ứng dụng cho Mac, và chỉ chạy khi bạn bật hoặc khi một client bạn đã cấu hình khởi động nó. Server lắng nghe trên 127.0.0.1, không có chế độ truy cập từ xa, và client không bao giờ thấy mật khẩu.

Client được duyệt như thế nào

Theo mặc định, mọi yêu cầu đều cần một token có phạm vi (Read Only, Read & Write hoặc Full Access), và lần đầu một client truy cập một connection, một hộp thoại trên máy Mac sẽ hỏi bạn.

Client làm được gì

Mỗi connection quy định client bên ngoài được làm gì: Blocked, Read Only (mặc định) hoặc Read & Write. Câu lệnh ghi vẫn phải qua mức Safe Mode của connection, DROP và TRUNCATE cần token Full Access và sự đồng ý của bạn mỗi lần, và mọi lệnh gọi đều được ghi lại trên máy Mac.

Giới hạn nên biết

  • 127.0.0.1 cho biết server lắng nghe ở đâu, chứ không cho biết ai truy cập được. Chương trình nào trên máy Mac cũng kết nối được, và một trang đang mở trên claude.ai hay app.cursor.com cũng vậy. Bên nào cũng vẫn cần token, nên hãy luôn bật yêu cầu xác thực.
  • Những gì client đọc được, nó gửi tới dịch vụ AI của chính nó theo điều khoản của dịch vụ đó.

Mã nguồn mở

Mã nguồn công khai

Cả hai ứng dụng đều là mã nguồn mở theo giấy phép AGPLv3, kể cả phần mã của các tính năng trả phí. Những gì trang này mô tả đều đọc được trong kho mã nguồn, cùng các script ký và notarize từng bản phát hành, và bạn có thể tự build ứng dụng cho Mac.

Báo cáo lỗ hổng bảo mật

Cách báo cáo

Gửi email tới [email protected], hoặc báo cáo riêng trên GitHub, bằng tiếng Anh hoặc tiếng Việt. Đừng mở issue, discussion hay pull request công khai cho một lỗ hổng.

Cần nêu những gì

Thành phần bị ảnh hưởng và phiên bản của nó: ứng dụng cho Mac, ứng dụng cho iPhone và iPad, một plugin hay trang web này. Thêm phiên bản macOS hoặc iOS, loại cơ sở dữ liệu nếu lỗi liên quan tới driver, các bước hoặc một proof of concept để tái hiện, và kẻ tấn công thu được gì.

Phiên bản nào được vá

Chỉ bản phát hành mới nhất của mỗi ứng dụng và plugin được vá lỗi bảo mật, nên hãy kiểm tra lỗi vẫn còn ở bản mới nhất trước khi báo cáo.