Hướng dẫn bảo mật của Nền tảng Google Maps

Các ứng dụng và dự án sử dụng API và SDK của Google Maps Platform phải sử dụng khoá API hoặc OAuth 2.0 (nếu được hỗ trợ) để tự xác thực.

Các phương pháp hay nhất này hướng dẫn bạn cách bảo mật quyền truy cập vào Maps Platform.

Nếu bạn muốn sử dụng OAuth 2.0 để uỷ quyền lưu lượng truy cập từ máy chủ đến máy chủ, hãy tìm chủ đề OAuth trong tài liệu về API. Hãy xem bài viết Sử dụng OAuth cho ứng dụng phía máy chủ để biết thêm thông tin.

Ngoài việc áp dụng các quy định hạn chế về ứng dụng và khoá API, hãy tuân thủ mọi biện pháp bảo mật áp dụng cho các sản phẩm cụ thể của Google Maps Platform. Ví dụ: hãy xem Maps JavaScript API bên dưới trong phần Các quy định hạn chế về API và ứng dụng nên dùng.

Nếu khoá API của bạn đã được sử dụng, hãy xem các đề xuất bên dưới trong phần Nếu bạn đang hạn chế một khoá API đang được sử dụng.

Để biết thêm thông tin chi tiết về chữ ký số, được hỗ trợ bởi Maps Static API và Street View Static API, hãy xem Hướng dẫn về chữ ký số.

Các phương pháp hay nhất nên dùng

Để tăng cường bảo mật và tránh bị tính phí cho việc sử dụng trái phép, hãy làm theo các phương pháp hay nhất về bảo mật API sau đây cho tất cả các API, SDK hoặc dịch vụ của Google Maps Platform:

Hạn chế khoá API

Sử dụng các khoá API riêng biệt cho từng ứng dụng

Xoá khoá API không dùng đến

Kiểm tra mức sử dụng khoá API

Hãy cẩn thận khi xoay vòng khoá API

Tách mức sử dụng phía máy khách và phía máy chủ thành các dự án riêng biệt

Tắt các dịch vụ không dùng đến

Đề xuất bổ sung cho ứng dụng phía máy khách

Sử dụng SDK phía máy khách

Bảo mật các lệnh gọi dịch vụ web phía máy khách

Các đề xuất bổ sung cho trang web hoặc ứng dụng phía máy khách sử dụng API web tĩnh

Bảo vệ việc sử dụng API web tĩnh

Các đề xuất bổ sung cho ứng dụng phía máy chủ sử dụng dịch vụ web

Bảo vệ khoá API dịch vụ web

Sử dụng OAuth cho ứng dụng phía máy chủ

Nếu bạn đang hạn chế hoặc xoay vòng một khoá API đang được sử dụng

  • Trước khi thay đổi khoá API, hãy Kiểm tra mức sử dụng khoá API Bước này đặc biệt quan trọng nếu bạn đang thêm các quy tắc hạn chế cho một khoá đã được sử dụng trong ứng dụng chính thức.

  • Sau khi bạn thay đổi khoá, hãy cập nhật tất cả ứng dụng bằng khoá API mới (nếu cần).

  • Nếu khoá API của bạn không bị xâm phạm và không bị lạm dụng, bạn có thể di chuyển ứng dụng sang nhiều khoá API mới theo tốc độ của riêng mình, giữ nguyên khoá API ban đầu cho đến khi bạn chỉ thấy một loại lưu lượng truy cập, và khoá API có thể được hạn chế một cách an toàn bằng một loại quy tắc hạn chế ứng dụng mà không gây ra tình trạng gián đoạn dịch vụ ngoài ý muốn.

    Để được hướng dẫn thêm, hãy xem bài viết Di chuyển sang nhiều khoá API.

    Theo dõi mức sử dụng theo thời gian và xem thời điểm các API, loại nền tảng và miền cụ thể đã di chuyển khỏi khoá API cũ trước khi bạn chọn hạn chế hoặc xoá khoá cũ. Để biết thêm thông tin, hãy xem phần Báo cáo và giám sát và Chỉ số

  • Nếu khoá API của bạn bị lộ, bạn nên nhanh chóng bảo mật khoá API và ngăn chặn hành vi sai trái. Trong ứng dụng Android và ứng dụng iOS, khoá sẽ không được thay thế cho đến khi khách hàng cập nhật ứng dụng. Việc cập nhật hoặc thay thế khoá trên trang web hoặc trong ứng dụng phía máy chủ sẽ đơn giản hơn nhiều, nhưng vẫn có thể cần phải lập kế hoạch cẩn thận và thực hiện nhanh chóng.

    Để biết thêm thông tin, hãy xem bài viết Xử lý việc sử dụng trái phép khoá API.

Thông tin khác

Các quy định hạn chế nên áp dụng cho ứng dụng và API

Hạn chế khoá API

Phương pháp hay nhất là luôn hạn chế khoá API bằng một loại quy tắc hạn chế ứng dụng và một hoặc nhiều quy tắc hạn chế API. Để biết các quy định hạn chế được đề xuất theo API, SDK hoặc dịch vụ JavaScript, hãy xem phần Các quy định hạn chế được đề xuất đối với ứng dụng và API bên dưới.

  • Các quy định hạn chế đối với ứng dụng Bạn có thể giới hạn việc sử dụng khoá API cho các nền tảng cụ thể: ứng dụng Android hoặc iOS, hoặc các trang web cụ thể cho ứng dụng phía máy khách, hoặc các địa chỉ IP hoặc mạng con CIDR cụ thể cho các ứng dụng phía máy chủ đưa ra lệnh gọi API REST của dịch vụ web.

    Bạn có thể hạn chế một khoá bằng cách thêm một hoặc nhiều quy định hạn chế về ứng dụng thuộc loại mà bạn muốn cho phép. Sau đó, chỉ những yêu cầu bắt nguồn từ các nguồn này mới được cho phép.

  • Các quy tắc hạn chế về API Bạn có thể hạn chế những API, SDK hoặc dịch vụ của Google Maps Platform mà khoá API của bạn có thể sử dụng. Các quy tắc hạn chế về API chỉ cho phép các yêu cầu đến API và SDK mà bạn chỉ định. Đối với bất kỳ khoá API nào, bạn có thể chỉ định số lượng quy tắc hạn chế API tuỳ ý. Danh sách các API hiện có bao gồm tất cả API được bật cho một dự án.

Đặt quy tắc hạn chế đối với ứng dụng cho khoá API

  1. Mở trang Thông tin đăng nhập Google Maps Platform trên Google Cloud Console.

  2. Chọn khoá API mà bạn muốn hạn chế.

  3. Trên trang Edit API key (Chỉnh sửa khoá API), trong mục Key restrictions (Hạn chế cho khoá), hãy chọn Set an application restriction (Đặt quy tắc hạn chế cho ứng dụng).

    Trang chỉnh sửa khoá API

  4. Chọn một trong các loại quy định hạn chế và cung cấp thông tin được yêu cầu theo danh sách quy định hạn chế.

    Loại quy định hạn chế Mô tả
    Trang web Chỉ định một hoặc nhiều trang web giới thiệu.
    • Các lược đồ URI của trang giới thiệu được hỗ trợ rộng rãi là https và http. Các lược đồ khác không được đảm bảo sẽ hoạt động chính xác, vì các trình duyệt web hiện đại sẽ không gửi tiêu đề `Referer` trong các yêu cầu gửi đi vì lý do quyền riêng tư.
    • Luôn cung cấp toàn bộ chuỗi liên kết giới thiệu, bao gồm cả giao thức, tên máy chủ và cổng không bắt buộc (ví dụ: https://google.com).
    • Bạn có thể sử dụng ký tự đại diện để cho phép tất cả miền con. Ví dụ: https://*.google.com chấp nhận tất cả các trang web kết thúc bằng .google.com.
    • Hãy cẩn thận khi cho phép các liên kết giới thiệu có đường dẫn đầy đủ, ví dụ: https://google.com/some/path, vì hầu hết các trình duyệt web sẽ xoá đường dẫn khỏi các yêu cầu khác nguồn gốc vì lý do bảo mật.
    địa chỉ IP Chỉ định một hoặc nhiều địa chỉ IPv4 hoặc IPv6, hoặc mạng con bằng ký hiệu CIDR. Địa chỉ IP phải khớp với địa chỉ nguồn mà máy chủ Google Maps Platform ghi nhận. Nếu bạn sử dụng tính năng dịch địa chỉ mạng (NAT), thì địa chỉ này thường tương ứng với địa chỉ IP công khai của máy.
    Ứng dụng Android

    Thêm tên gói Android (từ tệp AndroidManifest.xml) và vân tay số ký chứng chỉ SHA-1 của mỗi ứng dụng Android mà bạn muốn uỷ quyền.

    1. Chọn Ứng dụng Android.
    2. Nhấp vào + Thêm.
    3. Nhập tên gói và dấu vân tay chứng chỉ SHA-1. Ví dụ:
      com.example.android.mapexample
      BB:0D:AC:74:D3:21:E1:43:67:71:9B:62:91:AF:A1:66:6E:44:5D:75
    4. Nhấp vào Lưu.

    Có hai loại chứng chỉ:

    • Chứng chỉ gỡ lỗi: Chỉ sử dụng loại chứng chỉ này với các ứng dụng bạn đang thử nghiệm và mã khác không dùng trong phiên bản chính thức. Đừng cố gắng xuất bản ứng dụng được ký bằng chứng chỉ gỡ lỗi. Bộ công cụ SDK Android sẽ tự động tạo chứng chỉ này khi bạn chạy bản gỡ lỗi.
    • Chứng chỉ phát hành: Sử dụng chứng chỉ này khi bạn đã sẵn sàng phát hành ứng dụng lên một cửa hàng ứng dụng. Bộ công cụ SDK Android sẽ tạo chứng chỉ này khi bạn chạy một bản phát hành.

    Để biết thêm thông tin về chứng chỉ và việc ký ứng dụng Android, hãy xem Hướng dẫn ký ứng dụng.

    Nếu bạn sử dụng Tính năng ký ứng dụng của Play, để tìm nạp dấu vân tay chứng chỉ ký, hãy xem phần Làm việc với nhà cung cấp API. Nếu bạn quản lý khoá ký của riêng mình, hãy xem phần Tự ký ứng dụng hoặc tham khảo hướng dẫn cho môi trường tạo bản dựng của bạn.

    Ứng dụng iOS

    Thêm mã nhận dạng gói của từng ứng dụng iOS mà bạn muốn uỷ quyền.

    1. Chọn Ứng dụng iOS.
    2. Nhấp vào + Thêm.
    3. Thêm mã nhận dạng gói để chấp nhận yêu cầu từ ứng dụng iOS có mã nhận dạng đó.
    4. Nhấp vào Lưu.

    Để biết các đề xuất về quy định hạn chế đối với ứng dụng, hãy xem phần Quy định hạn chế đối với ứng dụng được đề xuất.

  5. Chọn Lưu.

Đặt quy tắc hạn chế về API cho khoá API

  1. Mở trang Thông tin đăng nhập Google Maps Platform trên Google Cloud Console.

  2. Chọn khoá API mà bạn muốn hạn chế.

  3. Trên trang Chỉnh sửa khoá API, trong mục Hạn chế API:

    • Chọn Restrict key (Hạn chế cho khoá).

    • Mở Chọn API rồi chọn API hoặc SDK mà bạn muốn ứng dụng của mình truy cập bằng khoá API.

    Nếu một API hoặc SDK không có trong danh sách, bạn cần bật API hoặc SDK đó. Để biết thông tin chi tiết, hãy xem phần Cách bật một hoặc nhiều API hoặc SDK.

    Hạn chế một API trên trang Chỉnh sửa khoá API

  4. Chọn Lưu.

    Quy tắc hạn chế sẽ trở thành một phần trong định nghĩa khoá API sau bước này. Hãy nhớ cung cấp thông tin chi tiết phù hợp và chọn Lưu để lưu các quy định hạn chế đối với khoá API. Để biết thêm thông tin, hãy xem hướng dẫn Lấy khoá API trong tài liệu về API hoặc SDK cụ thể mà bạn quan tâm.

Để biết các quy định hạn chế nên áp dụng cho API, hãy xem phần Quy định hạn chế nên áp dụng cho API.

Kiểm tra mức sử dụng khoá API

Nếu đang hạn chế khoá API sau khi tạo hoặc nếu muốn xem những API nào đang được một khoá sử dụng để có thể hạn chế, bạn nên kiểm tra mức sử dụng khoá API. Các bước này cho bạn biết dịch vụ và phương thức API nào đang sử dụng khoá API. Nếu bạn thấy có hoạt động sử dụng ngoài các dịch vụ của Google Maps Platform, hãy điều tra để xác định xem bạn có cần thêm các quy định hạn chế khác để tránh việc sử dụng không mong muốn hay không. Bạn có thể sử dụng Trình khám phá chỉ số của Google Maps Platform Cloud Console để xác định các quy định hạn chế về API và ứng dụng cần áp dụng cho khoá API của mình:

Xác định các API sử dụng khoá API của bạn

Các báo cáo chỉ số sau đây giúp bạn xác định những API nào đang sử dụng khoá API của bạn. Hãy sử dụng các báo cáo này để làm những việc sau:

  • Xem cách sử dụng khoá API của bạn
  • Phát hiện mức sử dụng bất thường
  • Giúp xác minh xem một khoá không dùng đến có an toàn để xoá hay không. Để biết thông tin về cách xoá khoá API, hãy xem phần Xoá khoá API không dùng đến.

Khi áp dụng các quy tắc hạn chế đối với API, hãy sử dụng các báo cáo này để tạo danh sách API cần uỷ quyền hoặc để xác thực các đề xuất về quy tắc hạn chế đối với khoá API được tạo tự động. Để biết thêm thông tin về các quy định hạn chế được đề xuất, hãy xem bài viết Áp dụng các quy định hạn chế được đề xuất. Để biết thêm thông tin về cách sử dụng Trình khám phá chỉ số, hãy xem bài viết Tạo biểu đồ bằng Trình khám phá chỉ số.

  1. Chuyển đến Trình khám phá chỉ số của Google Cloud Console

  2. Đăng nhập và chọn dự án cho khoá API mà bạn muốn kiểm tra.

  3. Chuyển đến trang Trình khám phá chỉ số cho loại API của bạn:

    • Đối với khoá API sử dụng bất kỳ API nào ngoại trừ Maps Embed API: Chuyển đến trang Metrics explorer (Trình khám phá chỉ số).

    • Đối với khoá API sử dụng Maps Embed API: Chuyển đến Metrics Explorer (Trình khám phá chỉ số).

  4. Kiểm tra từng khoá API:

    1. Chọn THÊM BỘ LỌC.

    2. Chọn nhãn credential_id.

    3. Chọn giá trị tương ứng với khoá mà bạn muốn kiểm tra.

    4. Lưu ý những API mà khoá API này đang được sử dụng và xác nhận rằng việc sử dụng này là đúng như dự kiến.

    5. Sau khi hoàn tất, hãy chọn biểu tượng Xoá bộ lọc ở cuối dòng bộ lọc đang hoạt động để xoá bộ lọc bổ sung.

  5. Lặp lại thao tác này cho các khoá còn lại.

  6. Hạn chế khoá API của bạn chỉ cho những API đang được sử dụng.

  7. Nếu bạn phát hiện thấy hành vi sử dụng trái phép, hãy xem bài viết Xử lý hành vi sử dụng trái phép khoá API.

Chọn đúng loại quy định hạn chế đối với ứng dụng bằng Trình khám phá chỉ số

Sau khi bạn đã xác minh và thực hiện mọi hành động cần thiết để đảm bảo khoá API của bạn chỉ được dùng cho các dịch vụ của Google Maps Platform mà khoá đó đang sử dụng, hãy xác minh rằng khoá API có các quy định hạn chế chính xác về ứng dụng.

Nếu khoá API của bạn có các quy tắc hạn chế được đề xuất, hãy áp dụng các quy tắc đó. Để biết thêm thông tin, hãy xem bài viết Áp dụng các quy tắc hạn chế được đề xuất đối với khoá API.

Nếu khoá API của bạn không có đề xuất hạn chế, hãy xác định loại hạn chế ứng dụng cần áp dụng, dựa trên platform_type được báo cáo bằng Trình khám phá chỉ số:

  1. Chuyển đến Trình khám phá chỉ số của Google Cloud Console

  2. Đăng nhập và chọn dự án cho các API mà bạn muốn kiểm tra.

  3. Chuyển đến trang Trình khám phá chỉ số: Trình khám phá chỉ số.

  4. Kiểm tra từng khoá API:

    1. Chọn THÊM BỘ LỌC.

    2. Chọn nhãn credential_id.

    3. Chọn giá trị tương ứng với khoá mà bạn muốn kiểm tra.

    4. Sau khi hoàn tất, hãy chọn biểu tượng Xoá bộ lọc ở cuối dòng bộ lọc đang hoạt động để xoá bộ lọc bổ sung.

  5. Lặp lại thao tác này cho các khoá còn lại.

  6. Sau khi bạn có loại nền tảng cho khoá API, hãy áp dụng quy tắc hạn chế ứng dụng cho platform_type đó:

    PLATFORM_TYPE_JS : Áp dụng các quy định hạn chế về trang web cho khoá.

    PLATFORM_TYPE_ANDROID : Áp dụng các quy định hạn chế về ứng dụng Android cho khoá.

    PLATFORM_TYPE_IOS : Áp dụng các quy định hạn chế đối với ứng dụng iOS cho khoá.

    PLATFORM_TYPE_WEBSERVICE : Bạn có thể phải dựa vào các quy tắc hạn chế về địa chỉ IP đối với khoá để hạn chế khoá đúng cách.

    Để biết các đề xuất cho Maps Static API và Street View Static API, hãy xem phần Bảo vệ việc sử dụng API web tĩnh.

    Để biết các đề xuất về Maps Embed API, hãy xem bài viết Trang web có Maps Embed API.

    Khoá API của tôi đang sử dụng nhiều loại nền tảng: Bạn không thể bảo mật lưu lượng truy cập của mình đúng cách chỉ bằng một khoá API. Bạn cần di chuyển sang nhiều khoá API. Để biết thêm thông tin, hãy xem bài viết Di chuyển sang nhiều khoá API.

Sử dụng các khoá API riêng biệt cho từng ứng dụng

Phương pháp này giúp giới hạn phạm vi của từng khoá. Nếu một khoá API bị xâm phạm, bạn có thể xoá hoặc xoay vòng khoá bị ảnh hưởng mà không cần cập nhật các khoá API khác. Bạn có thể tạo tối đa 300 khoá API cho mỗi dự án. Để biết thêm thông tin, hãy xem phần Giới hạn đối với khoá API.

Mặc dù một khoá API cho mỗi ứng dụng là lý tưởng cho mục đích bảo mật, nhưng bạn có thể sử dụng khoá bị hạn chế trên nhiều ứng dụng, miễn là các ứng dụng đó sử dụng cùng một loại hạn chế ứng dụng.

Áp dụng các quy tắc hạn chế được đề xuất đối với khoá API

Đối với một số chủ sở hữu, người chỉnh sửa và quản trị viên khoá API của dự án, Google Cloud Console đề xuất các quy định hạn chế cụ thể đối với khoá API cho các khoá API không bị hạn chế dựa trên mức sử dụng và hoạt động của họ trên Google Maps Platform.

Nếu có, các đề xuất sẽ xuất hiện dưới dạng các lựa chọn được tự động điền trước trên trang Thông tin xác thực của Google Maps Platform.

Các API và SDK của Google Maps Platform được tính năng đề xuất tự động hỗ trợ

  • Maps JavaScript API, bao gồm Dịch vụ chỉ đường (Cũ), Dịch vụ ma trận khoảng cách (Cũ), Dịch vụ độ cao, Dịch vụ mã hoá địa lý, Lớp địa điểm, Tiện ích Tự động hoàn thành địa điểm (Mới), API dữ liệu Tự động hoàn thành địa điểm, Thư viện địa điểm, Dịch vụ địa điểm, Tiện ích Tự động hoàn thành địa điểm và Bộ công cụ giao diện người dùng Địa điểm

  • Maps Static API và Chế độ xem đường phố Static API

  • API nhúng cho Maps

  • Maps SDK cho Android, Navigation SDK cho Android, Places SDK cho Android và Places UI Kit trên Android

  • SDK bản đồ dành cho iOS, SDK Navigation dành cho iOS, SDK Places dành cho iOS, SDK Places Swift dành cho iOS và Places UI Kit trên iOS.

Lý do khiến bạn có thể không thấy đề xuất hoặc thấy đề xuất không đầy đủ

Lý do không thấy đề xuất

  • Bạn (cũng) đang sử dụng khoá API trên các dịch vụ không phải của Google Maps Platform hoặc các dịch vụ của Maps Platform chưa được các đề xuất tự động hỗ trợ.

    Nếu bạn thấy mức sử dụng trên các dịch vụ khác, hãy đừng áp dụng đề xuất mà không làm những việc sau trước tiên:

    1. Xác minh rằng mức sử dụng API mà bạn thấy trong Trình khám phá chỉ số của Google Cloud Console là hợp lệ.

    2. Thêm các dịch vụ còn thiếu vào danh sách API cần được uỷ quyền theo cách thủ công.

    3. Thêm thủ công mọi quy định hạn chế còn thiếu đối với ứng dụng cho các dịch vụ được thêm vào danh sách API. Nếu các khoá API khác mà bạn thêm yêu cầu một loại quy tắc hạn chế khác đối với ứng dụng, hãy xem bài viết Di chuyển sang nhiều khoá API.

  • Khoá API của bạn không được dùng trong các SDK hoặc API phía máy khách.

  • Bạn sử dụng khoá API trong một ứng dụng hoặc trang web có lưu lượng truy cập thấp và không có hoạt động sử dụng trong 60 ngày qua.

  • Bạn mới tạo một khoá mới hoặc mới triển khai một khoá hiện có trong một ứng dụng mới. Nếu đúng như vậy, bạn chỉ cần đợi thêm vài ngày để các đề xuất được cập nhật.

  • Bạn đang sử dụng khoá API trong nhiều ứng dụng cần có các loại quy tắc hạn chế ứng dụng xung đột nhau, hoặc bạn đang sử dụng cùng một khoá API trong quá nhiều ứng dụng hoặc trang web khác nhau. Trong cả hai trường hợp, bạn nên di chuyển sang nhiều khoá. Để biết thêm thông tin, hãy xem bài viết Di chuyển sang nhiều khoá API.

Lý do bạn thấy đề xuất chưa hoàn chỉnh

  • Bạn sử dụng khoá API trong một ứng dụng hoặc trang web có lưu lượng truy cập thấp và không có hoạt động sử dụng trong 60 ngày qua.

  • Bạn vừa mới bắt đầu sử dụng một khoá hiện có trên một API hoặc dịch vụ mới, và quy trình đề xuất hạn chế khoá API tự động chưa xử lý các chỉ số sử dụng mới nhất. Quá trình truyền chỉ số sử dụng có thể mất vài ngày.

    Nếu bạn thấy mức sử dụng trên các dịch vụ khác, hãy đừng áp dụng đề xuất mà không làm những việc sau trước tiên:

    1. Xác minh rằng mức sử dụng API mà bạn thấy trong Trình khám phá chỉ số của Google Cloud Console là hợp lệ.

    2. Thêm các dịch vụ còn thiếu vào danh sách API cần được uỷ quyền theo cách thủ công.

    3. Thêm thủ công mọi quy định hạn chế còn thiếu đối với ứng dụng cho các dịch vụ được thêm vào danh sách API. Nếu các khoá API khác mà bạn thêm yêu cầu một loại quy tắc hạn chế khác đối với ứng dụng, hãy xem bài viết Di chuyển sang nhiều khoá API.

    4. Trừ phi bạn cần gấp phải hạn chế một khoá, chẳng hạn như do việc sử dụng trái phép, bạn cũng có thể đợi một hoặc hai ngày để các đề xuất được cập nhật.

Lý do khiến bạn có thể thấy các đề xuất không xuất hiện trong biểu đồ

  • Ứng dụng hoặc trang web của bạn chỉ gửi các đợt lưu lượng truy cập rất ngắn. Trong trường hợp này, hãy chuyển từ chế độ xem BIỂU ĐỒ sang hiển thị BẢNG hoặc CẢ HAI, vì mức sử dụng vẫn hiển thị trong chú giải. Để biết thêm thông tin, hãy xem phần Bật/tắt chú giải đầy đủ của biểu đồ.

  • Lưu lượng truy cập của bạn đến từ Maps Embed API. Để biết hướng dẫn, hãy xem bài viết Xác định các API sử dụng khoá API của bạn.

  • Lưu lượng truy cập từ ứng dụng hoặc trang web nằm ngoài phạm vi ngày có trong Trình khám phá chỉ số của Google Cloud Console.

  1. Mở trang Thông tin xác thực của Google Maps Platform trong Google Cloud Console.

  2. Chọn Áp dụng các quy định hạn chế được đề xuất (nếu có).

    Áp dụng các quy định hạn chế được đề xuất

  3. Chọn Kiểm tra mức sử dụng API để xác minh những dịch vụ đang sử dụng khoá API. Nếu bạn thấy các dịch vụ không phải của Google Maps Platform, hãy tạm dừng để xem xét các bước đề xuất ở trên theo cách thủ công. Xem các bước khắc phục sự cố ở đầu phần Áp dụng các quy định hạn chế được đề xuất cho khoá API.

  4. Kiểm tra kỹ để đảm bảo các quy tắc hạn chế được điền sẵn khớp với các trang web và ứng dụng mà bạn dự kiến sử dụng khoá API.

    Phương pháp hay nhất: Ghi lại và xoá mọi quy định hạn chế về ứng dụng hoặc API không liên kết với dịch vụ của bạn. Nếu có lỗi xảy ra do một phần phụ thuộc không mong muốn, bạn có thể thêm lại các ứng dụng hoặc API cần thiết.

    • Nếu bạn nhận thấy một ứng dụng, trang web hoặc API rõ ràng bị thiếu trong đề xuất, hãy thêm ứng dụng, trang web hoặc API đó theo cách thủ công hoặc đợi vài ngày để đề xuất cập nhật.

    • Nếu bạn cần được hỗ trợ thêm về đề xuất, hãy liên hệ với nhóm hỗ trợ.

  5. Chọn Áp dụng.

Việc cần làm nếu ứng dụng của bạn bị từ chối sau khi áp dụng một đề xuất

Nếu bạn nhận thấy một ứng dụng hoặc trang web bị từ chối sau khi áp dụng quy tắc hạn chế, hãy tìm quy tắc hạn chế đối với ứng dụng mà bạn cần thêm vào thông báo lỗi phản hồi của API.

SDK và API phía máy khách

Ứng dụng dựa trên trình duyệt và WebView

Các trình duyệt hiện đại thường loại bỏ tiêu đề Referer trong yêu cầu khác nguồn gốc vì lý do quyền riêng tư, thường loại bỏ tiêu đề này xuống Origin. Tuy nhiên, hành vi chính xác phụ thuộc vào referrer-policy được áp dụng của trang web lưu trữ và cũng có thể thay đổi, tuỳ thuộc vào trình duyệt và phiên bản của người dùng.

Các ứng dụng web sử dụng lược đồ URI cục bộ hoặc mờ để tải nội dung thường sẽ có trình duyệt kết xuất hoặc WebView loại bỏ hoàn toàn tiêu đề Referer khỏi mọi cuộc gọi đi. Điều này có thể khiến các yêu cầu không thành công khi sử dụng khoá API có các quy định hạn chế về trang web.

Để được hướng dẫn thêm, hãy xem bài viết Lưu trữ ứng dụng dựa trên trình duyệt trên máy chủ.

Hướng dẫn khắc phục sự cố cho các ứng dụng dựa trên trình duyệt và WebView:

  • Đối với Maps JavaScript API, hãy xem bảng điều khiển gỡ lỗi của trình duyệt để biết thông tin chi tiết về cách uỷ quyền cho ứng dụng của bạn.

    Các lược đồ URI lạ được hỗ trợ một phần. Nếu một số phần trong ứng dụng của bạn không hoạt động với một lược đồ URI lạ, ngay cả sau khi cho phép người giới thiệu bắt buộc, thì có thể bạn sẽ cần lưu trữ ứng dụng của mình từ xa trên một máy chủ và tải ứng dụng đó qua HTTPS (hoặc HTTP).

    Nếu bạn cần được trợ giúp về các lược đồ URI không phổ biến, hãy liên hệ với nhóm hỗ trợ.

  • Các API khác của Nền tảng Maps thường sẽ trả về liên kết giới thiệu mà bạn cần uỷ quyền trong phản hồi lỗi API, giả sử ứng dụng khách đã gửi thông tin này cùng với yêu cầu bị từ chối.

    Các lược đồ URI lạ không được hỗ trợ.

Ứng dụng Android

Sử dụng Cầu gỡ lỗi Android (adb) hoặc Logcat

Ứng dụng iOS

Hãy xem phần Xem thông điệp nhật ký

Ứng dụng gọi trực tiếp dịch vụ web

Đối với các ứng dụng gọi trực tiếp API REST HTTPS của Google Maps Platform hoặc điểm cuối gRPC mà không có SDK phía máy khách của Google Maps Platform, hãy xem bên dưới:

Ứng dụng Android và iOS

Nếu ứng dụng Android hoặc iOS của bạn gọi trực tiếp các dịch vụ của Nền tảng Maps mà không sử dụng bất kỳ SDK ứng dụng nào hiện có của Nền tảng Google Maps, hãy xem phần Ứng dụng Android và Ứng dụng iOS để biết thêm các mẹo khắc phục sự cố, cũng như phần Bảo mật các lệnh gọi dịch vụ web phía máy khách để biết các phương pháp bảo mật hay nhất hiện tại cho các trường hợp sử dụng trên thiết bị di động.

Nếu ứng dụng của bạn ghi nhật ký các phản hồi lỗi của Maps Platform API, thì hướng dẫn nêu trên cho SDK phía máy khách cũng có thể hữu ích trong việc khắc phục sự cố xác thực.

Ứng dụng phía máy chủ

Các ứng dụng phía máy chủ dựa vào khoá API được bảo mật tốt nhất thông qua các quy tắc hạn chế về địa chỉ IP. Nếu bạn đã áp dụng các quy định hạn chế về địa chỉ IP cho khoá của mình và nhật ký dịch vụ của bạn ghi lại các phản hồi lỗi của API Nền tảng Google Maps, hãy kiểm tra nhật ký hệ thống để biết thêm thông tin. Phản hồi lỗi sẽ bao gồm địa chỉ IP của máy chủ mà bạn cần uỷ quyền.

Ứng dụng dựa trên trình duyệt hoặc WebView

Mặc dù Maps Static API, Chế độ xem đường phố Static API và các API mới hơn của Google Maps Platform cũng sẽ hỗ trợ các quy định hạn chế về trang giới thiệu, nhưng xin lưu ý rằng các trình duyệt web hoặc thành phần hiển thị web có thể sẽ hạn chế tiêu đề Referer đối với Origin cho các yêu cầu khác nguồn gốc và có thể sẽ bỏ qua việc gửi tiêu đề này, ví dụ: đối với các tài nguyên được truy cập cục bộ hoặc đối với các tài nguyên được phân phát qua các giao thức không phải HTTP hoặc HTTPS.

Nếu bạn không thể sử dụng Maps JavaScript API trong ứng dụng của mình và các quy định hạn chế đối với trang web không hoạt động, hãy xem bài viết Bảo mật lệnh gọi dịch vụ web phía máy khách để biết cách đưa ra lệnh gọi dịch vụ web của Nền tảng Maps một cách an toàn từ trong ứng dụng phía máy khách dựa trên trình duyệt.

Mẹo kiểm tra các quy định hạn chế đối với API

Để kiểm tra các quy tắc hạn chế bắt buộc đối với API, hãy xem phần Xác định các API sử dụng khoá API của bạn.

Nếu bạn không thể xác định nên áp dụng quy định hạn chế nào:

  1. Ghi lại các quy định hạn chế hiện tại để tham khảo sau này.
  2. Hãy tạm thời xoá các tiện ích này trong khi bạn điều tra vấn đề. Bạn có thể kiểm tra mức sử dụng theo thời gian bằng cách làm theo các bước trong phần Kiểm tra mức sử dụng khoá API.
  3. Nếu cần, hãy liên hệ với nhóm hỗ trợ.

Xoá khoá API không dùng đến

Trước khi xoá khoá API, hãy đảm bảo rằng khoá đó không được dùng trong môi trường thực tế. Nếu không có lưu lượng truy cập thành công, thì có thể bạn xoá khoá này một cách an toàn. Để biết thêm thông tin, hãy xem bài viết Kiểm tra mức sử dụng khoá API.

Cách xoá khoá API:

  1. Mở trang Thông tin đăng nhập Google Maps Platform trên Google Cloud Console.

  2. Chọn khoá API mà bạn muốn xoá.

  3. Chọn nút Xoá ở gần đầu trang.

  4. Trên trang Xoá thông tin xác thực, hãy chọn Xoá.

    Quá trình xoá khoá API sẽ mất vài phút để có hiệu lực. Sau khi quá trình truyền tải hoàn tất, mọi lưu lượng truy cập sử dụng khoá API đã xoá sẽ bị từ chối.

Hãy cẩn thận khi xoay vòng khoá API

Khi bạn xoay vòng khoá API, một khoá mới sẽ được tạo và có tất cả các quy tắc hạn chế của khoá cũ. Trong khoảng thời gian này, cả khoá cũ và khoá mới đều được chấp nhận, giúp bạn có cơ hội di chuyển ứng dụng của mình để sử dụng khoá mới.

Trước khi xoay vòng khoá API:

  • Trước tiên, hãy thử hạn chế khoá API như mô tả trong phần Hạn chế khoá API.

  • Nếu bạn không thể hạn chế khoá API do các loại quy tắc hạn chế ứng dụng xung đột, hãy di chuyển sang nhiều khoá (bị hạn chế) mới như mô tả trong phần Di chuyển sang nhiều khoá API. Việc di chuyển giúp bạn kiểm soát quá trình di chuyển và triển khai tiến trình cho các khoá API mới.

Nếu không thể thực hiện các đề xuất trước đó và bạn phải xoay vòng khoá API để ngăn chặn việc sử dụng trái phép, hãy làm theo các bước sau:

  1. Mở trang Thông tin đăng nhập Google Maps Platform trên Google Cloud Console.

  2. Mở khoá API mà bạn muốn xoay vòng.

  3. Ở đầu trang, hãy chọn Xoay vòng khoá.

  4. Nếu muốn, hãy thay đổi tên khoá API.

  5. Chọn Tạo.

  6. Hãy cập nhật ứng dụng của bạn để sử dụng khoá mới.

Sau khi bạn cập nhật ứng dụng để sử dụng khoá mới, hãy xoá khoá cũ bằng cách nhấp vào nút Xoá khoá trước đó trong phần Khoá trước đó của trang khoá API mới.

Di chuyển sang nhiều khoá API

Để di chuyển từ việc sử dụng một khoá API cho nhiều ứng dụng sang một khoá API duy nhất cho mỗi ứng dụng, hãy làm như sau:

  1. Xác định những ứng dụng cần khoá mới:

    • Ứng dụng web là ứng dụng dễ cập nhật nhất vì bạn kiểm soát tất cả mã. Lên kế hoạch cập nhật tất cả khoá của ứng dụng dựa trên nền tảng web.
    • Ứng dụng di động khó hơn nhiều vì khách hàng phải cập nhật ứng dụng trước khi có thể sử dụng khoá mới.
  2. Tạo và hạn chế khoá mới: Thêm cả quy tắc hạn chế cho ứng dụng và ít nhất một quy tắc hạn chế cho API. Để biết thêm thông tin, hãy xem Các phương pháp hay nhất nên áp dụng.

  3. Thêm khoá mới vào ứng dụng: Đối với ứng dụng di động, quá trình này có thể mất vài tháng cho đến khi tất cả người dùng cập nhật lên ứng dụng mới nhất có khoá API mới.

Tách mức sử dụng phía máy khách và phía máy chủ thành các dự án riêng biệt

Nếu bạn cần gọi các dịch vụ của Google Maps Platform từ cả ứng dụng phía máy chủ và trực tiếp từ ứng dụng phía máy khách chạy trên thiết bị của người dùng cuối, thì Google khuyên bạn nên chia mức sử dụng thành hai dự án riêng biệt.

Phương pháp này cho phép bạn áp dụng hạn mức phù hợp theo phút, theo người dùng cho hầu hết các dịch vụ của Google Maps Platform trên dự án phía máy khách, giúp đảm bảo tất cả người dùng cuối đều nhận được hạn mức dự án tổng thể một cách công bằng mà không ảnh hưởng đến nhau.

Tuy nhiên, vì các quy định hạn chế về hạn mức cho mỗi người dùng ảnh hưởng đến cả ứng dụng phía máy khách và phía máy chủ, nên nếu bạn cũng cần băng thông cao cho các công việc phía máy chủ, hãy thiết lập một dự án riêng cho trường hợp sử dụng này, được định cấu hình với hạn mức cao hơn cho mỗi người dùng hoặc không có giới hạn nào cả.

Tắt các dịch vụ không dùng đến

Đừng để các dịch vụ không dùng đến ở trạng thái bật trong một dự án, vì việc này dễ bị lợi dụng, đặc biệt nếu bạn chưa hạn chế tất cả khoá API công khai của mình. Phương pháp hay nhất là chỉ bật một dịch vụ trên một dự án khi các ứng dụng của bạn cần đến dịch vụ đó.

Việc thêm các quy tắc hạn chế về API cho một khoá sẽ ngăn việc sử dụng khoá đó trên các dịch vụ chưa được uỷ quyền, nhưng các quy tắc hạn chế về API chỉ áp dụng cho khoá cụ thể đó. Hãy tắt một dịch vụ ở cấp dự án để ngăn chặn việc sử dụng trái phép dịch vụ đó trên bất kỳ khoá nào được liên kết với dự án.

Sử dụng SDK phía máy khách

Khi sử dụng SDK Google Maps Platform phía máy khách được cung cấp, bạn luôn có thể áp dụng các quy tắc hạn chế phù hợp cho khoá API để đảm bảo an toàn cho việc sử dụng dịch vụ.

Việc sử dụng SDK phía máy khách cũng sẽ cho phép bạn áp dụng cơ chế bảo mật nâng cao hơn, chẳng hạn như Kiểm tra ứng dụng Firebase trên các nền tảng API của Nền tảng Google Maps có hỗ trợ cơ chế này. Hãy xem bài viết Sử dụng tính năng Kiểm tra ứng dụng để bảo mật khoá API để biết thêm thông tin chi tiết.

Nếu SDK phía máy khách không có sẵn cho nền tảng của bạn, hãy xem phần Bảo mật các lệnh gọi dịch vụ web phía máy khách.

Để biết phạm vi cung cấp SDK Google Maps Platform phía máy khách cho các nền tảng khác nhau, hãy xem phần Các quy tắc hạn chế được đề xuất đối với ứng dụng và API.

Bảo vệ việc sử dụng API web tĩnh

Các API web tĩnh, chẳng hạn như Maps Static API và Street View Static API, tương tự như các lệnh gọi API dịch vụ web.

Bạn gọi cả hai bằng API REST HTTPS và thường tạo URL yêu cầu API trên máy chủ. Tuy nhiên, thay vì trả về phản hồi JSON, API web tĩnh sẽ tạo hình ảnh mà bạn có thể nhúng vào mã HTML được tạo. Quan trọng hơn, thông thường, ứng dụng của người dùng cuối (chứ không phải máy chủ) sẽ gọi dịch vụ của Google Maps Platform.

Sử dụng chữ ký số

Bạn nên luôn sử dụng chữ ký số cùng với khoá API. Ngoài ra, hãy xem xét số lượng yêu cầu chưa ký mà bạn muốn cho phép mỗi ngày và điều chỉnh hạn mức yêu cầu chưa ký cho phù hợp.

Để biết thêm thông tin chi tiết về chữ ký số, hãy xem Hướng dẫn về chữ ký số.

Bảo vệ khoá bí mật ký ứng dụng

Để bảo vệ API web tĩnh, đừng nhúng trực tiếp khoá bí mật ký API vào mã hoặc trong cây nguồn, cũng như không hiển thị các khoá bí mật đó trong ứng dụng phía máy khách. Hãy làm theo các phương pháp hay nhất sau đây để bảo vệ khoá bí mật ký:

  • Tạo URL yêu cầu đã ký cho Maps Static API và Chế độ xem đường phố Static API phía máy chủ khi phân phát trang web hoặc để phản hồi yêu cầu API từ ứng dụng di động của bạn.

    Đối với nội dung tĩnh trên web, bạn có thể sử dụng tiện ích Ký URL ngay trên trang Thông tin xác thực của Google Maps Platform trong Cloud Console.

    Đối với nội dung trên web động, hãy xem mã mẫu ký yêu cầu URL hiện có.

  • Lưu trữ thông tin bí mật về việc ký bên ngoài mã nguồn và cây nguồn của ứng dụng. Nếu bạn đặt thông tin bí mật về việc ký hoặc bất kỳ thông tin riêng tư nào khác vào các biến môi trường hoặc đưa vào các tệp được lưu trữ riêng, sau đó chia sẻ mã, thì thông tin bí mật về việc ký sẽ không được đưa vào các tệp được chia sẻ. Nếu bạn lưu trữ thông tin bí mật về việc ký hoặc bất kỳ thông tin riêng tư nào khác trong tệp, hãy lưu trữ các tệp đó bên ngoài cây nguồn của ứng dụng để giữ thông tin bí mật về việc ký bên ngoài hệ thống kiểm soát mã nguồn. Biện pháp phòng ngừa này đặc biệt quan trọng nếu bạn sử dụng hệ thống quản lý mã nguồn công khai, chẳng hạn như GitHub.

Bảo vệ khoá API của dịch vụ web

Để sử dụng các API và dịch vụ của Google Maps Platform một cách an toàn trong các ứng dụng phía máy khách, hãy xem bài viết Sử dụng SDK phía máy khách và Bảo mật lệnh gọi dịch vụ web phía máy khách.

Lưu trữ khoá API bên ngoài mã nguồn hoặc cây nguồn của ứng dụng. Nếu bạn đặt khoá API hoặc bất kỳ thông tin nào khác vào biến môi trường hoặc thêm các tệp được lưu trữ riêng biệt rồi chia sẻ mã, thì khoá API sẽ không được đưa vào các tệp được chia sẻ. Điều này đặc biệt quan trọng nếu bạn sử dụng hệ thống quản lý mã nguồn công khai, chẳng hạn như GitHub.

Để giúp bảo vệ khoá API dịch vụ web của bạn khỏi việc vô tình sử dụng, Google khuyên bạn nên áp dụng các quy định hạn chế về API cho mọi khoá dùng cho Nền tảng Maps. Hơn nữa, việc áp dụng các quy định hạn chế về địa chỉ IP cho khoá dịch vụ web cũng sẽ giúp bảo vệ khoá khỏi việc sử dụng trái phép từ các địa chỉ IP nguồn khác, ngay cả khi khoá vô tình bị rò rỉ.

Sử dụng OAuth cho ứng dụng phía máy chủ

OAuth 2.0 là một tiêu chuẩn mở để uỷ quyền truy cập.

Mặc dù giao thức OAuth 2.0 hỗ trợ các trường hợp sử dụng mà người dùng cuối uỷ quyền cho một ứng dụng truy cập vào dữ liệu cá nhân thay mặt họ, nhưng trường hợp sử dụng dự kiến cho OAuth 2.0 với Nền tảng Google Maps là để nhà phát triển sử dụng mã truy cập tạm thời nhằm uỷ quyền cho ứng dụng của họ gọi một API thay mặt cho tài khoản dịch vụ của dự án trên đám mây Google bằng các quyền của tài khoản dịch vụ đó.

Vì tài khoản dịch vụ có thể có các quyền cực kỳ rộng, nên bạn nên sử dụng OAuth 2.0 để cho phép các lệnh gọi từ máy chủ đến máy chủ giữa các ứng dụng phía máy chủ đáng tin cậy của nhà phát triển và máy chủ Nền tảng Maps của Google.

Đối với các ứng dụng phía máy khách chạy trên thiết bị của người dùng cuối, bạn nên sử dụng các phương thức xác thực khác, chẳng hạn như khoá API.

Nếu bạn muốn sử dụng OAuth 2.0 để cho phép lưu lượng truy cập từ máy chủ đến máy chủ, hãy tìm chủ đề OAuth trong tài liệu về API.

Ví dụ: sau đây là chủ đề OAuth cho Address Validation API.

Cuộc gọi dịch vụ web an toàn phía máy khách

Nếu không có SDK phía máy khách, hãy xem các đề xuất bên dưới.

Sử dụng máy chủ proxy

Việc sử dụng máy chủ proxy bảo mật sẽ cung cấp một nguồn đáng tin cậy để tương tác với một điểm cuối dịch vụ web của Google Maps Platform từ một ứng dụng phía máy khách mà không làm lộ khoá API, khoá bí mật ký hoặc tài khoản dịch vụ Google Cloud cho người dùng trái phép.

Các điểm chính:

  • Tạo các yêu cầu của bạn cho Google Maps Platform trên máy chủ proxy. Không cho phép ứng dụng chuyển tiếp các lệnh gọi API tuỳ ý bằng proxy.

  • Xử lý sau các phản hồi của Google Maps Platform trên máy chủ proxy của bạn. Lọc ra dữ liệu mà ứng dụng không cần.

Để biết thêm thông tin về cách sử dụng máy chủ proxy, hãy xem bài viết Living Vicariously: Using Proxy Servers with the Google Data API Client Libraries (Sống gián tiếp: Sử dụng máy chủ proxy với Thư viện ứng dụng API dữ liệu trên Google).

Bảo mật các lệnh gọi dịch vụ web trực tiếp trên web dành cho thiết bị di động

Nếu bạn không thể thiết lập máy chủ proxy bảo mật cho ứng dụng phía máy khách, hãy bảo mật ứng dụng bằng các bước sau:

  1. Sử dụng tiêu đề HTTP:

    • Android: Sử dụng tiêu đề HTTP X-Android-Package và X-Android-Cert.

    • iOS: Sử dụng tiêu đề HTTP X-Ios-Bundle-Identifier.

  2. Thêm các quy tắc hạn chế tương ứng cho ứng dụng vào khoá Android hoặc iOS.

  3. Trước khi cân nhắc việc thực hiện lệnh gọi trực tiếp từ ứng dụng di động đến một dịch vụ web API REST của Google Maps Platform, hãy xác minh rằng các yêu cầu có mã nhận dạng ứng dụng Android hoặc iOS không chính xác sẽ bị từ chối.

    Nếu các quy định hạn chế đối với ứng dụng Android và iOS không được hỗ trợ trên điểm cuối đã kiểm thử, thì Google rất khuyến khích bạn sử dụng một máy chủ proxy bảo mật giữa ứng dụng di động và điểm cuối dịch vụ web của Google Maps Platform.

Mẹo dành cho ứng dụng Android:

  • Trước khi tích hợp ứng dụng Android với các dịch vụ của Google Maps Platform, hãy xác minh rằng mã ứng dụng (còn gọi là tên gói) của bạn được định dạng chính xác. Để biết thông tin chi tiết, hãy xem phần Định cấu hình mô-đun ứng dụng trong tài liệu Android.

  • Để truyền trực tiếp X-Android-Package từ ứng dụng, hãy tra cứu theo phương thức lập trình bằng Context.getPackageName().

  • Để truyền trực tiếp X-Android-Cert từ ứng dụng, hãy tính toán vân tay số SHA-1 bắt buộc của chứng chỉ ký ứng dụng, có thể truy cập thông qua PackageInfo.signingInfo.

  • Nếu bạn uỷ quyền cho ứng dụng Android của mình bằng Google Cloud Console, hãy lưu ý rằng giao diện người dùng yêu cầu vân tay số SHA-1 phải là một chuỗi được phân tách bằng dấu hai chấm, ví dụ: 00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33. Tuy nhiên, công cụ gcloud và API khoá API yêu cầu chuỗi thập lục phân không có dấu phân tách.

Mẹo dành cho ứng dụng iOS:

  • Trước khi tích hợp ứng dụng iOS với các dịch vụ của Nền tảng Google Maps, hãy xác minh rằng Mã nhận dạng gói của bạn được định dạng chính xác.

  • Thông thường, bạn phải luôn truyền Mã nhận dạng gói của gói chính trong tiêu đề X-Ios-Bundle-Identifier khi uỷ quyền cho ứng dụng iOS.

Để biết thêm thông tin, hãy tham khảo các bài viết Quản lý khoá API và Sử dụng khoá API để truy cập vào API.

Lưu trữ ứng dụng dựa trên trình duyệt trên máy chủ

Các khung, chẳng hạn như Apache Cordova, cho phép bạn dễ dàng tạo các ứng dụng kết hợp đa nền tảng chạy bên trong một WebView. Tuy nhiên, các quy định hạn chế về trang web đối với khoá API không được đảm bảo sẽ hoạt động chính xác, trừ phi ứng dụng web của bạn được tải bằng HTTP hoặc HTTPS từ một trang web mà bạn kiểm soát và đã uỷ quyền.

Tài nguyên đi kèm, được tải cục bộ từ bên trong một ứng dụng kết hợp hoặc được truy cập bằng URL tệp cục bộ, trong nhiều trường hợp sẽ ngăn hoạt động uỷ quyền dựa trên liên kết giới thiệu vì công cụ trình duyệt hỗ trợ webview của bạn sẽ bỏ qua việc gửi tiêu đề Referer. Để tránh điều này, hãy lưu trữ ứng dụng web của bạn ở phía máy chủ, chứ không phải phía máy khách.

Ngoài ra, đối với ứng dụng di động, hãy cân nhắc sử dụng SDK gốc hiện có của Google Maps Platform dành cho Android và iOS, thay vì sử dụng SDK dựa trên web.

Sử dụng tính năng Kiểm tra ứng dụng để bảo mật khoá API

Một số SDK và API của Maps cho phép bạn tích hợp với Kiểm tra ứng dụng Firebase. Tính năng Kiểm tra ứng dụng giúp bảo vệ các lệnh gọi từ ứng dụng của bạn đến Google Maps Platform bằng cách chặn lưu lượng truy cập đến từ các nguồn không phải là ứng dụng hợp pháp. Để làm việc này, hệ thống sẽ kiểm tra mã thông báo của một nhà cung cấp dịch vụ chứng thực. Việc tích hợp ứng dụng với Kiểm tra ứng dụng giúp bảo vệ ứng dụng khỏi các yêu cầu độc hại, nhờ đó bạn không bị tính phí cho các lệnh gọi API trái phép.

Hướng dẫn tích hợp Kiểm tra ứng dụng:

Xử lý việc sử dụng trái phép khoá API

Nếu bạn phát hiện thấy khoá API của mình được sử dụng trái phép, hãy làm như sau để giải quyết vấn đề:

  1. Hạn chế khoá: Nếu bạn đã sử dụng cùng một khoá trong nhiều ứng dụng, hãy di chuyển sang nhiều khoá API và sử dụng các khoá API riêng biệt cho từng ứng dụng. Để biết thêm thông tin, hãy xem:

  2. Nếu sử dụng SDK Địa điểm hoặc Maps JavaScript API, bạn cũng có thể dùng tính năng Kiểm tra ứng dụng để bảo mật Khoá API.

  3. Chỉ thay thế hoặc xoay vòng khoá nếu:

    • Bạn phát hiện thấy hoạt động sử dụng trái phép trên các khoá không thể bị hạn chế hoặc đã bị hạn chế và không thể áp dụng Kiểm tra ứng dụng.

    • Bạn muốn hành động nhanh hơn để bảo mật khoá API và ngăn chặn hành vi sai trái, ngay cả khi việc này có thể ảnh hưởng đến lưu lượng truy cập hợp pháp từ ứng dụng của bạn.

    Trước khi tiếp tục, hãy đọc kỹ phần Cẩn thận khi xoay vòng khoá API.

  4. Nếu bạn vẫn gặp vấn đề hoặc cần được trợ giúp, hãy liên hệ với bộ phận hỗ trợ.

Các quy định hạn chế nên áp dụng cho ứng dụng và API

Các phần sau đây đề xuất các quy định hạn chế thích hợp về ứng dụng và API cho từng API, SDK hoặc dịch vụ của Google Maps Platform.

Các quy tắc hạn chế nên áp dụng cho API

Các nguyên tắc sau đây về quy định hạn chế đối với API áp dụng cho tất cả dịch vụ của Google Maps Platform:

  • Hạn chế khoá API chỉ cho những API mà bạn đang sử dụng, ngoại trừ các trường hợp sau:

    • Nếu ứng dụng của bạn sử dụng Places SDK cho Android hoặc Places SDK cho iOS, hãy uỷ quyền cho Places API (Mới) hoặc Places API, tuỳ thuộc vào phiên bản SDK mà bạn sử dụng. 1

    • Nếu ứng dụng của bạn sử dụng Maps JavaScript API, hãy luôn uỷ quyền cho API này trên khoá của bạn.

    • Nếu bạn cũng sử dụng bất kỳ dịch vụ nào sau đây của API JavaScript của Maps, thì bạn cũng nên cho phép các API tương ứng sau:

      Dịch vụ Hạn chế API
      Dịch vụ chỉ đường (Cũ) Directions API (Cũ)
      Dịch vụ ma trận khoảng cách (Phiên bản cũ) Distance Matrix API (Cũ)
      Dịch vụ độ cao Elevation API
      Dịch vụ mã hoá địa lý Geocoding API
      Lớp Địa điểm, Tiện ích Place Autocomplete (Mới) và API dữ liệu Place Autocomplete Places API (Mới)2
      Thư viện địa điểm, Dịch vụ địa điểm và Tiện ích Place Autocomplete Places API2

1 Để biết thêm thông tin, hãy xem tài liệu về SDK Địa điểm cho Android và SDK Địa điểm cho iOS.

2 Nếu bạn không chắc chắn liệu mình có cần uỷ quyền cho Places API (Mới) hay Places API (Cũ) hay không, hãy xem tài liệu về Maps JavaScript API.

Một số ví dụ:

  • Bạn đang sử dụng Maps SDK cho Android và Places SDK cho Android, vì vậy, bạn thêm Maps SDK cho Android và Places API (Mới) làm các quy định hạn chế về API.

  • Trang web của bạn sử dụng Dịch vụ độ cao của Maps JavaScript API và Maps Static API, vì vậy, bạn thêm các quy tắc hạn chế về API cho tất cả các API sau:

    • API JavaScript cho Maps
    • Elevation API
    • API tĩnh cho Maps

Hạn chế ứng dụng được đề xuất

Trang web

Đối với các trang web sử dụng dịch vụ Maps JavaScript API, Maps Static API hoặc Street View Static API hoặc gọi trực tiếp các dịch vụ Google Maps Platform gần đây qua API REST HTTPS hoặc gRPC, hãy sử dụng quy định hạn chế về ứng dụng Trang web:

1 Đối với ứng dụng di động, hãy cân nhắc sử dụng Maps SDK cho Android và SDK bản đồ dành cho iOS gốc.

2 Đối với ứng dụng di động, hãy cân nhắc sử dụng Places SDK for Android và Places SDK for iOS gốc.

3 Xem thêm bài viết Bảo vệ việc sử dụng API tĩnh trên web.

Các trang web có Maps Embed API

Mặc dù Maps Embed API không tính phí, nhưng bạn vẫn nên hạn chế mọi khoá API được sử dụng để ngăn chặn hành vi sai trái trên các dịch vụ khác.

Phương pháp hay nhất: Tạo một khoá API riêng để sử dụng Maps Embed API và hạn chế khoá này chỉ cho Maps Embed API. Quy định hạn chế này bảo mật khoá một cách đầy đủ, ngăn chặn việc sử dụng trái phép khoá trên bất kỳ dịch vụ nào khác của Google. Để có toàn quyền kiểm soát nơi có thể sử dụng khoá Maps Embed API, Google khuyên bạn cũng nên áp dụng các quy định hạn chế về ứng dụng Trang web.

Nếu bạn không thể tách riêng mức sử dụng Maps Embed API thành một khoá API riêng, hãy bảo mật khoá hiện có bằng cách sử dụng quy định hạn chế về ứng dụng Trang web.

Ứng dụng và máy chủ sử dụng dịch vụ web

Đối với máy chủ và ứng dụng phía máy khách từ mạng nội bộ đáng tin cậy của công ty sử dụng dịch vụ web cùng với khoá API, hãy sử dụng quy định hạn chế ứng dụng IP addresses.

Sử dụng cho các ứng dụng và máy chủ dùng những API sau:

4 Đối với ứng dụng di động, hãy cân nhắc sử dụng SDK Điều hướng.

5 Để sử dụng thiết bị di động một cách an toàn, hãy dùng một máy chủ proxy bảo mật.

6 Đối với các ứng dụng phía máy khách, hãy cân nhắc sử dụng dịch vụ định vị vị trí gốc do nền tảng cung cấp; ví dụ: W3C Geolocation cho trình duyệt web, LocationManager hoặc trình cung cấp vị trí kết hợp API cho Android hoặc khung Core Location của Apple cho iOS.

7 Đối với ứng dụng di động, hãy cân nhắc sử dụng Places SDK cho Android và Places SDK cho iOS gốc.

8 Để sử dụng an toàn phía máy khách, hãy dùng một máy chủ proxy bảo mật.

Ứng dụng Android

Đối với các ứng dụng trên Android, hãy sử dụng quy định hạn chế về ứng dụng Android apps. Sử dụng cho các ứng dụng dùng những SDK sau:

Ngoài ra, hãy ngăn chặn việc vô tình đưa khoá API vào hệ thống quản lý phiên bản bằng cách sử dụng Trình bổ trợ Gradle bí mật để chèn thông tin bí mật từ một tệp cục bộ thay vì lưu trữ các thông tin đó trong tệp kê khai Android.

Ứng dụng iOS

Đối với ứng dụng trên iOS, hãy sử dụng quy định hạn chế ứng dụng iOS apps. Sử dụng cho các ứng dụng và máy chủ dùng những SDK sau:

Tài liệu đọc thêm