
Toàn Tập Bảo Mật Ứng Dụng Mobile Khi Không Có Chức Năng Đăng Nhập
Khi một ứng dụng mobile không yêu cầu đăng nhập, mục tiêu bảo mật chuyển từ xác thực người dùng sang bảo vệ thiết bị, đường truyền và API. Khám phá 4 trụ cột bảo mật cốt lõi: từ SSL Pinning, mã hóa cục bộ đến 3 cấp độ chống lạm dụng API (App Attestation).

Bui Quang Minh
Jul 29, 2026 • 5 mins read
Published
Jul 29, 2026
Category
Engineering
⏳ Tóm tắt cho người bận rộn (TL;DR)
Khi không có user login, bạn phải xác thực tính hợp lệ của Ứng dụng & Thiết bị. Cần tập trung vào 4 trụ cột:
- Bảo mật API (Đặc biệt quan trọng): Tránh dùng API Key nhúng cứng. Hãy nâng cấp lên Request Signing (Ký request bằng Keystore) hoặc chuẩn vàng App Attestation (Play Integrity / DeviceCheck).
- Bảo mật đường truyền: Bắt buộc dùng HTTPS và áp dụng SSL Pinning để chống hacker đứng giữa (Man-in-the-Middle) nghe lén hoặc sửa gói tin.
- Bảo mật mã nguồn: Dùng tool làm rối code (ProGuard/R8) và thêm cơ chế phát hiện máy đã Root/Jailbreak để ngăn chặn hacker tạo bản Mod.
- Bảo mật lưu trữ: Không lưu dữ liệu nhạy cảm dưới dạng Text. Sử dụng EncryptedSharedPreferences (Android) hoặc Keychain (iOS).
📖 BÀI VIẾT CHI TIẾT
Khi ứng dụng không có tính năng đăng nhập, mục tiêu bảo mật hoàn toàn thay đổi. Thay vì hỏi "Người dùng này là ai?", hệ thống của bạn phải trả lời được câu hỏi: "Request này có thực sự đến từ cái App nguyên bản do tôi phát hành, chạy trên một thiết bị thật hay không?".
Dưới đây là 4 trụ cột bảo mật bạn cần triển khai.
Trụ cột 1: Bảo mật API & Hệ thống Backend (3 Cấp độ)
Đây là ranh giới quan trọng nhất để chống lại các cuộc tấn công DDoS, cào dữ liệu (scraping) hoặc dùng bot spam API. Dưới đây là hành trình nâng cấp bảo mật API qua 3 cấp độ:
-
Mức 1 (Thấp) - Bearer Token Tĩnh (Hardcoded API Key): Nhúng cứng 1 chuỗi Token/API Key vào mã nguồn app và gửi qua Header. Rất yếu, vì hacker chỉ cần dịch ngược (decompile) app 1 lần là lấy được Key và gọi API vĩnh viễn.
-
Mức 2 (Trung bình) - Device Keypair + Request Signing: App tự sinh một cặp khóa (Public/Private Key) bên trong vùng an toàn của phần cứng (Android Keystore / iOS Secure Enclave). Mỗi request gửi đi sẽ được "ký" bằng Private Key (kèm Timestamp + Nonce). Ưu điểm: Private Key không thể bị trích xuất, chống lộ key. Nhược điểm: Không ngăn được hacker tự viết script giả lập một thiết bị mới để lấy key ảo.
-
Mức 3 (Cao nhất) - App Attestation (Xác thực tính toàn vẹn): Đây là Chuẩn vàng (dùng trong app Ngân hàng, Game). Hệ thống nhờ hệ điều hành bảo lãnh thông qua Play Integrity API (Android) hoặc DeviceCheck / App Attest API (iOS). App xin một "Integrity Token" từ Google/Apple, đính kèm vào request. Backend gọi chéo sang server của Google/Apple để kiểm chứng. Kết quả: Backend chắc chắn 100% đây là App xịn (chưa bị Mod), chạy trên thiết bị thật (không Root, không giả lập).
Trụ cột 2: Bảo mật đường truyền (Network Security)
Kể cả khi app an toàn, dữ liệu bay trên mạng vẫn có thể bị can thiệp (chèn quảng cáo, sửa nội dung API).
- HTTPS là bắt buộc: Mã hóa toàn bộ dữ liệu truyền tải.
- SSL Pinning (Certificate Pinning): HTTPS thông thường vẫn có thể bị hacker vượt qua nếu họ cài chứng chỉ giả mạo vào máy (dùng Proxy/Burp Suite). Bằng cách "ghim" cứng mã băm (hash) của chứng chỉ Server thật vào mã nguồn App, App sẽ lập tức ngắt kết nối nếu phát hiện chứng chỉ bị tráo đổi trên đường truyền.
Trụ cột 3: Bảo mật mã nguồn và Binary (Chống dịch ngược)
Hacker thường tải file .apk / .ipa về để tìm API Key, logic ẩn hoặc tạo bản Mod (như Mod xóa quảng cáo).
- Làm rối mã nguồn (Code Obfuscation): Sử dụng các công cụ như ProGuard hoặc R8 (Android) để đổi tên class, biến thành ký tự vô nghĩa, làm nản lòng kẻ dịch ngược.
- Anti-Tampering (Chống giả mạo): Lập trình để App tự kiểm tra chữ ký (Signature) của chính nó khi khởi chạy. Nếu phát hiện chữ ký bị đổi (do hacker đóng gói lại app), app tự động thoát.
- Root / Jailbreak Detection: Phát hiện thiết bị đã bị can thiệp sâu vào hệ điều hành để cảnh báo hoặc vô hiệu hóa các tính năng nhạy cảm.
Trụ cột 4: Bảo mật lưu trữ cục bộ (Data at Rest)
Dù không có tài khoản, app vẫn lưu trữ nhiều dữ liệu quan trọng ở máy người dùng (trạng thái mua In-App, cấu hình, token ẩn).
- Tuyệt đối không lưu Plain text: Không lưu dữ liệu quan trọng dưới dạng chuỗi rõ ràng trong
SharedPreferenceshoặcUserDefaults. - Sử dụng mã hóa phần cứng: Hãy dùng EncryptedSharedPreferences (Android) hoặc Keychain (iOS). Dữ liệu sẽ được mã hóa bằng các khóa an toàn nằm sâu trong chip bảo mật của thiết bị, cực kỳ khó bị đánh cắp.
Lời kết: Bảo mật là một quá trình liên tục. Với một app không có đăng nhập, việc kết hợp App Attestation cho API và SSL Pinning cho đường truyền sẽ loại bỏ được 99% các nỗ lực tấn công thông thường.