Làm cách nào để bảo vệ khóa API Google Maps trên ứng dụng Ionic?


8

Tôi có ứng dụng Ionic PWA được xuất bản cho Android và iOS (Tôi đã sử dụng Tụ điện để tạo bản dựng gốc). Trong mã frontend, nó có khóa API Google Maps của tôi, tuy nhiên, tôi không thể giới hạn nó trong bất kỳ tùy chọn nào mà Google cung cấp vì ...

  1. Giới thiệu HTTP - Nó không phải là một tên miền công cộng, nó nằm trên một máy chủ lưu trữ cục bộ trong chế độ xem web của ứng dụng gốc. http://localhost/cho Android và capacitor://localhost/cho iOS. Có vẻ như không an toàn khi sử dụng những hạn chế này vì chúng rất chung chung và tất cả các ứng dụng khác sẽ có cùng một ứng dụng.

  2. Địa chỉ IP - Vì lý do rõ ràng.

  3. Ứng dụng Android - Nó không nằm trong mã gốc, nó nằm trong một webview.
  4. Ứng dụng iOS - Nó không nằm trong mã gốc, nó nằm trong một webview.

    nhập mô tả hình ảnh ở đây

Không có lựa chọn nào trong số này có thể làm việc cho tình huống của tôi. Vậy làm cách nào để bảo vệ khóa API của tôi khỏi bị lạm dụng?

Có ý kiến ​​gì không? Tôi không thể là người duy nhất sử dụng Google Maps API trong ứng dụng Ionic.


sử dụng có nguồn gốc googlemap và làm theo liên kết này nó sẽ giúp bạn baadiersydow.com/...
Prakash ubhadiya

Đó là toàn bộ quan điểm của việc sử dụng Tụ. Bạn không phải sử dụng bất cứ thứ gì bản địa.
nachshon f

Câu trả lời:


4

Bạn có thể định cấu hình tên máy chủ của ứng dụng tụ điện

"server": {
    // You can configure the local hostname, but it's recommended to keep localhost
    // as it allows to run web APIs that require a secure context such as
    // navigator.geolocation and MediaDevices.getUserMedia.
    "hostname": "unique-app",
  }

và sau đó giới hạn các khóa API để capacitor://unique-app

https://capacitor.ionicframework.com/docs/basics/configuring-your-app


Tôi đang gặp sự cố ... Sau khi xây dựng sản phẩm, trên iOS, ứng dụng mở ra với màn hình trắng trống. Điều này chỉ xảy ra nếu tôi đặt tên máy chủ tùy chỉnh.
nachshon f

3

Để bảo vệ khóa API của bạn, bạn phải kiểm tra giá trị của window.location.hreftrong một lần xem web. Tôi đoán bạn sẽ thấy một cái gì đó như file://some/path.

Vì vậy, bạn sẽ cần áp dụng hạn chế giới thiệu HTTP cho đường dẫn này. Lưu ý rằng các URL có tệp: // giao thức yêu cầu biểu diễn đặc biệt như được giải thích trong

https://developers.google.com/maps/documentation/javascript/get-api-key#restrict_key

Lưu ý: file: // tham chiếu cần một đại diện đặc biệt để được thêm vào hạn chế khóa. Phần "file: //" phải được thay thế bằng "__file_url__" trước khi được thêm vào hạn chế khóa. Ví dụ: "file: /// path / to /" phải được định dạng là "__file_url __ // path / to / *". Sau khi bật tệp: // người giới thiệu, bạn nên thường xuyên kiểm tra việc sử dụng của mình để đảm bảo nó phù hợp với mong đợi của bạn.

Tôi hi vọng cái này giúp được.


Tôi đang sử dụng Tụ điện và nó kéo lên webview bằng localhost / (android) và tụ điện: // localhost / (iOS). Có vẻ như không an toàn khi sử dụng những hạn chế này vì chúng rất chung chung và tất cả các ứng dụng khác sẽ có cùng một ứng dụng. Gợi ý?
nachshon f
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.