Tôi nên thực hiện những bước nào để bảo vệ Khóa API Google Maps của mình?


96

Tôi đã nhận được khóa API Google Maps cho miền của mình.

Các ví dụ được cung cấp khi tôi lấy được khóa của mình cho thấy khóa được nhúng trong các tham số yêu cầu, ví dụ:

<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;sensor=true_or_false&amp;key=my-key" type="text/javascript"></script>

Tôi đánh giá cao rằng trường liên kết giới thiệu trong các yêu cầu phải khớp với miền của tôi, liệu có an toàn để hiển thị khóa của tôi trong các thẻ tập lệnh và những thứ tương tự không? Hoặc có bất kỳ bước nào khác mà tôi nên thực hiện?

Câu trả lời:


92

Xem xét khóa đó phải được bao gồm trong các <script>thẻ của các trang HTML của bạn, để tải các tệp / dữ liệu JS từ máy chủ của google, bạn không thể làm gì:

  • bạn phải đưa nó vào các tệp HTML của mình
  • mọi người có thể xem qua những cái đó.

Tuy nhiên, điều đó không thực sự quan trọng: nếu bất kỳ ai cố gắng sử dụng khóa này trên một miền khác không phải của bạn, họ sẽ nhận được cảnh báo Javascript - điều này không tốt cho người dùng.

Vì thế :

  • Không có gì bạn có thể làm được ; đây là cách nó hoạt động
  • Và không có gì nhiều bạn nên lo lắng, tôi sẽ nói.

5
Tôi nghĩ rằng bạn có thể sử dụng một proxy trên trang web của riêng bạn, đã sử dụng khóa để tìm nạp tệp "thực". Hoàn toàn vô nghĩa, vâng, nhưng tôi nghĩ là có thể.
Tim Sylvester 01/09/09

1
Tìm thấy nó đáng để kiểm tra trong trường hợp tôi bỏ lỡ một cái gì đó. Chúc mừng những người đã trả lời.
brabster

@Tim: không chắc; Tôi đoán chính mã JS nếu đánh lừa tên miền của trang web hiển thị bản đồ và có vẻ bình thường khi nó so sánh nó, theo một cách nào đó, với một thông tin có trong khóa - vẫn vậy, tôi đã không thử. ;;; @Brabster: :-)
Pascal MARTIN

2
Ví dụ: vấn đề là nếu chúng tôi muốn bảo vệ băng tần sử dụng khóa API của chúng tôi. Kiểm tra giải pháp của tôi.
Ifan Iqbal

3
và điều gì sẽ xảy ra nếu tôi lấy khóa api để sử dụng trong APP của riêng mình (windows / ios / android)? Tôi có thể mô phỏng liên kết giới thiệu và sử dụng khóa này cho mục đích của riêng tôi với chi phí của bạn!
loki

21

Có cài đặt trên bảng điều khiển API của Google có thể bảo vệ việc sử dụng băng tần API của bạn khỏi bị miền / người dùng khác sử dụng. Bạn có thể hạn chế và bảo vệ điều đó bằng cách sử dụng liên kết giới thiệu trên bảng điều khiển API. API Key sẽ từ chối các yêu cầu không có liên kết giới thiệu phù hợp với các hạn chế của bạn.

Đây là ảnh chụp màn hình từ Google cho Khóa API chỉ có thể được sử dụng bởi Google frowm hai miền của nó. nhập mô tả hình ảnh ở đây


3
người dùng di động thì sao?
Muhammad Umer

Để thêm một chút, chi tiết có thể có mặt ở đây developers.google.com/maps/...
SIslam

15

Mặc dù câu hỏi này đã có từ một vài năm trước nhưng nó là một câu hỏi rất hay. Theo tôi hiểu, việc để lộ các khóa API, ngay cả khi chúng được khớp với miền, vẫn có thể dẫn đến lạm dụng. Có một bài đăng trên Security Stack Exchange ở đây trình bày chi tiết hơn về vấn đề này.

Các bước bạn có thể thực hiện để tránh lạm dụng tiềm ẩn đã được Google xuất bản tại đây:

Hướng dẫn Thực hành Tốt nhất để sử dụng API một cách an toàn: https://support.google.com/cloud/answer/6310037?hl=vi

Mặc dù tôi khuyên bạn nên sử dụng tất cả nó trên tàu, có một cách tiếp cận sẽ giải quyết ví dụ cụ thể đã được đăng bởi Brabster và đó là lưu trữ khóa trong một biến môi trường . Bằng cách này, tất cả những gì bạn cần làm là thay thế khóa cho một biến phía máy chủ được lưu trữ trong dự án của bạn. Tuy nhiên, hãy đảm bảo không gửi tệp lưu khóa vào kho lưu trữ công cộng.


16
Tôi cũng cảm thấy rằng câu trả lời này không giải quyết được câu hỏi. API bản đồ yêu cầu javascript phía trình duyệt, javascript luôn có thể đọc được bởi bất kỳ ai tìm nạp trang.
david van brink,

-1

Bạn nên sử dụng back end / server side để bảo vệ và xử lý khóa. Trong trường hợp của tôi, tôi đã sử dụng phía máy chủ Django f / w có thể phân phát lệnh gọi ajax để lấy khóa từ tập lệnh máy chủ / db sau đó chuyển nó vào google api.


4
Nếu khóa API của bạn đến được trình duyệt, bên thứ ba có thể truy xuất khóa này.
Moose on the Loose
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.