A Quick Guide to Android Intents

Khái niệm
Intent
is an object in Android used to communicate between components within an app or between different apps (similar to amessage
in asocket
).Intent
acts like a message or request to trigger a specific action (for example, opening a screen or starting a background task). It can be compared to anobject
duringSerialization
.
Chức năng
✅ Khởi chạy thành phần ứng dụng: Dùng để mở Activity
, bắt đầu Service
hoặc gửi thông điệp đến BroadcastReceiver
.
✅ Truyền dữ liệu: Intent
có thể chứa dữ liệu bổ sung (extras
) để truyền thông tin giữa các thành phần.
✅ Kích hoạt hành động cụ thể: Mở trình duyệt, gửi email, gọi điện, v.v.
✅ Giao tiếp giữa các ứng dụng: Cho phép một ứng dụng gửi yêu cầu đến ứng dụng khác để thực hiện một chức năng cụ thể (phân tích để attack).
Phân loại
A. Dựa trên cách chỉ định thành phần nhận
1️⃣ Explicit Intent (Tường minh)
Chỉ rõ thành phần (
Activity
,Service
) sẽ xử lýIntent
.Thường được sử dụng trong cùng một ứng dụng.
Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("key", "value");
startActivity(intent);
2️⃣ Implicit Intent (Ngầm định)
Chỉ mô tả hành động (
Action
) cần thực hiện, không chỉ định rõ thành phần xử lý.Hệ thống Android tự tìm ứng dụng phù hợp để xử lý.
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://www.google.com"));
startActivity(intent);
B. Dựa trên mục đích sử dụng
1️⃣ Broadcast Intent
- Dùng để gửi thông điệp đến nhiều thành phần (
BroadcastReceiver
).
Intent intent = new Intent("com.example.CUSTOM_BROADCAST");
sendBroadcast(intent);
2️⃣ Sticky Intent
Lưu giữ
Intent
trong bộ nhớ hệ thống để các thành phần khác có thể nhận sau đó.❌ Hạn chế: Ít được sử dụng do lo ngại về bảo mật.
3️⃣ Pending Intent
Intent
được cấp cho một thành phần khác (hệ thống hoặc ứng dụng khác) để thực thi sau.Ví dụ: Kích hoạt một
Activity
từNotification
.
Ý nghĩa của Intent
✅ Connects components within the app: Facilitates communication between Activity
, Service
, and BroadcastReceiver
.
✅ Increases flexibility: Allows for app modularization, avoiding dependence on specific components.
✅ Enables communication between apps: One app can use features of another app without direct integration.
✅ Easily integrates with the system: Supports standard actions like opening a browser, sending emails, and making phone calls.
Các cuộc tấn công liên quan đến Intent
Loại tấn công | Mục tiêu | Biện pháp phòng ngừa |
Intent Spoofing | Gây hành vi không mong muốn, truyền dữ liệu giả | Xác thực nguồn Intent, đặt exported="false" . |
Intent Hijacking | Chặn và đánh cắp dữ liệu Intent | Dùng LocalBroadcastManager , quyền tùy chỉnh. |
Activity Hijacking | Gây hiểu lầm hoặc lừa đảo thông tin người dùng | Đặt exported="false" , kiểm tra nguồn Intent. |
Pending Intent Hijacking | Sử dụng lại hoặc sửa đổi Pending Intent | Sử dụng FLAG_IMMUTABLE . |
Privilege Escalation | Lợi dụng quyền cao hơn từ ứng dụng khác | Kiểm tra quyền trước khi thực hiện tác vụ. |
Service Hijacking | Gửi lệnh trái phép hoặc đánh cắp dữ liệu Service | Đặt exported="false" , xác thực Intent. |
Data Leakage | Đánh cắp dữ liệu nhạy cảm được truyền qua Intent | Mã hóa dữ liệu, sử dụng quyền tùy chỉnh. |
🚀 Tóm tắt:
Intent
là một công cụ quan trọng trong Android để giao tiếp giữa các thành phần.Hiểu cách sử dụng
Intent
đúng cách giúp tăng cường bảo mật và tránh các cuộc tấn công.Luôn xác thực nguồn
Intent
và kiểm soát quyền truy cập để tránh rủi ro bảo mật.
Subscribe to my newsletter
Read articles from Cơ Phan directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
