0

[Giải Ngố] Google Maps API Key Là Gì? Xài Sao Cho Không Bị "Lủng Ví"?

Chào anh em thiện lành trên Viblo! 👋

Chuyện là hôm qua, mình có ngồi cấu hình lại một project cũ, tự dưng nhìn thấy cái đoạn config Maps_API_KEY nằm chễm chệ trong file .env. Bỗng nhiên mình nhớ lại ngày xưa lúc mới chập chững làm quen với việc tích hợp bản đồ vào web/app, cái khái niệm "API Key" này từng làm mình lú lẫn kha khá. Khổ nhất là vụ lỡ tay push cả key lên public repo trên GitHub và sáng hôm sau nhận được email cảnh báo trừ tiền của Google. 🥲

Nên hôm nay, mình quyết định ngoi lên đây viết một bài "giải ngố" sương sương về Google Maps API Key. Anh em nào mới vào nghề hoặc chuẩn bị làm tính năng liên quan đến bản đồ thì bơi hết vào đây nhé!

1. Google Maps API Key rốt cuộc là cái gì?

Để hiểu đơn giản nhất, anh em cứ tưởng tượng Google Maps là một khu vui chơi giải trí siêu to khổng lồ, trong đó có đủ trò:

  • Xem bản đồ (Maps JavaScript API)
  • Tìm đường đi từ điểm A đến điểm B (Directions API)
  • Tính khoảng cách (Distance Matrix API)
  • Tìm quán cafe gần nhất (Places API)

Nhưng ngặt nỗi, ông bảo vệ (Google) không cho ai vào chơi miễn phí vô danh cả. Ông ấy yêu cầu bạn phải có một cái thẻ thành viên.

Google Maps API Key chính là cái thẻ thành viên đó. Nó là một chuỗi ký tự dài ngoằng, độc nhất vô nhị (ví dụ: AIzaSyB...xyz123), được Google cấp cho dự án của bạn. Mỗi khi code của bạn gọi lên server của Google để xin dữ liệu bản đồ, bạn phải "kẹp" cái key này vào trong request để chứng minh: "Alo Google, em là Hoàng ở project X đây, cho em xin cái bản đồ khu vực Quận 1 nhé!".

2. Tại sao Google lại bắt mình xài Key?

Nhiều anh em thắc mắc: "Sao không cho gọi API tự do luôn đi, bày vẽ Key kiếc làm gì cho mệt?" Thực ra, Google làm vậy đều có lý do cả (và đa phần là liên quan đến... tiền 💵):

  • Nhận diện "khách quen": Google cần biết request này đến từ ứng dụng nào, do ai quản lý
  • Theo dõi và Giới hạn (Quota & Rate Limiting): API của Google Maps không phải là hàng "all you can eat" (ăn buffet bao bụng). Mỗi dịch vụ sẽ có một giới hạn số lần gọi miễn phí trong tháng. Vượt qua con số đó, bạn sẽ phải trả tiền. Key giúp Google đếm xem bạn đã xài hết bao nhiêu "lượt" rồi.
  • Chặn "trẻ trâu" phá hoại: Nếu ứng dụng của bạn bị spam hoặc dính DDoS làm gọi API liên tục, Google có thể dựa vào Key để tạm thời khóa luồng truy cập đó lại, bảo vệ hệ thống của họ (và bảo vệ hầu bao của bạn).

3. Cảnh báo đỏ: Nỗi ác mộng mang tên "Lộ Key"

Vì API Key gắn liền với thẻ tín dụng (Billing Account) của bạn trên Google Cloud Console, nên nếu bạn để lộ nó, hậu quả sẽ cực kỳ... thảm khốc.

Thử tưởng tượng bạn ném cái API Key thẳng vào code Frontend, sau đó push lên GitHub (dạng Public). Một anh hacker nào đó đi ngang qua, lụm được cái Key. Thay vì dùng để xem bản đồ, anh ta dùng Key của bạn để làm một con app gọi xe, và ngày đêm gọi API tìm đường.

Cuối tháng, Google gửi cho bạn một cái bill vài ngàn đô la. Lúc đó chỉ có nước khóc thét! 😱

4. Bí kíp bảo mật API Key (Dev "có tâm" bắt buộc phải biết)

Để kê cao gối ngủ mà không lo bị Google đòi nợ, anh em nhớ nằm lòng các nguyên tắc Hạn chế Key (Key Restrictions) sau khi tạo key trên Google Cloud Console:

Application Restrictions (Hạn chế ứng dụng):* Nếu dùng cho Web (Frontend): Chỉ cho phép các request đến từ tên miền (domain) của bạn (VD: *.yourdomain.com/*). Các trang web khác lấy key của bạn gắn vào mã nguồn của họ cũng sẽ bị Google từ chối.

Nếu dùng cho Backend (Node.js, Laravel, Go...): Hạn chế theo IP Address. Chỉ những IP từ server của bạn mới được phép gọi API.

Nếu dùng cho Mobile App: Hạn chế theo Android (dựa vào SHA-1 certificate) hoặc iOS (dựa vào Bundle ID).

API Restrictions (Hạn chế dịch vụ): Đừng tạo 1 key có quyền truy cập tất cả API. Nếu project của bạn chỉ cần hiển thị bản đồ, hãy set cho cái key đó chỉ có quyền truy cập vào Maps JavaScript API. Đừng cấp quyền cho Places API hay Directions API nếu không xài.

Set Quota & Billing Alerts: Luôn luôn thiết lập giới hạn ngân sách (Budget Alerts). Ví dụ: Set cảnh báo khi chi phí đạt mức $10. Thà app chết lâm sàng vài tiếng vì hết quota còn hơn là đền tiền ốm đòn.

Tổng kết

Tóm lại, Google Maps API Key là "chìa khóa" không thể thiếu khi bạn muốn vọc vạch vào hệ sinh thái bản đồ siêu xịn sò của Google. Nó rất mạnh mẽ, tiện lợi, nhưng cũng đòi hỏi anh em phải nâng cao ý thức bảo mật, đặc biệt là che giấu kỹ lưỡng và thiết lập các restriction đàng hoàng.

Hy vọng bài viết này giúp anh em hiểu rõ hơn về API Key của Google Maps. Nếu thấy bài viết hữu ích, đừng tiếc một Upvote và Bookmark để ủng hộ mình ra thêm nhiều bài viết khác nhé!

Anh em có từng dính "phốt" nào liên quan đến API Key chưa? Cùng chia sẻ dưới phần bình luận cho xôm nào! 👇


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí