2016-07-01 14 views
9

Theo https://developers.google.com/maps/documentation/javascript/tutorial#HTML5, có vẻ như tôi có thể thêm thẻ sau vào html của tôi và bắt đầu sử dụng bản đồ API js.Tôi có cần phải ẩn khóa API khi sử dụng google maps js API không? Nếu vậy, làm thế nào?

<script async defer 
     src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"> 
</script> 

Nhưng điều này sẽ tiết lộ khóa API của tôi.

Sau khi tìm kiếm trên google và duyệt câu trả lời trên stackoverflow, tôi cảm thấy có thể không cần phải giấu khóa API này. Tôi chỉ cần đặt người giới thiệu khi tôi tạo khóa API trên google, như được giải thích trong https://stackoverflow.com/a/2256312/1316649

Vì vậy, ngay cả những người khác biết khóa API của tôi, họ không thể sử dụng khóa đó từ một miền khác. Tôi có đúng không?

Nhưng google nói rằng bạn không nên nhúng khóa API trong mã: https://support.google.com/cloud/answer/6310037

Vì vậy, tôi cần phải che giấu chìa khóa API khi sử dụng Google Maps API js? Nếu vậy, làm thế nào?

Cập nhật: Bằng 'Khóa API', tôi có nghĩa là khóa API trình duyệt.

+1

Nếu khóa api chỉ liên quan đến miền của bạn, điều gì sẽ khác biệt nếu người khác có thể nhìn thấy nó? –

+2

Tôi nghĩ rằng câu trả lời hỗ trợ điện toán đám mây là bắt tất cả về bảo mật cho một loạt các dịch vụ của Google sử dụng khóa. Vì khóa Maps của bạn được gắn với miền của bạn, bạn không cần phải lo lắng về nó (và không thể làm bất cứ điều gì anyway) – j08691

Trả lời

6

Có nhiều loại khóa API cho Google Maps. Có các phím trình duyệt sẽ được sử dụng khi nhúng các thư viện phía máy khách và bạn có thể tiết lộ cho mọi người (bạn cần để sử dụng nó ở phía máy khách để bạn không thể tránh được điều đó). Sau đó, có các khóa phía máy chủ được sử dụng cho những thứ như dịch vụ mã hóa địa lý. Những người được cho là được giữ bí mật.

Chỉ cần đảm bảo bạn đang sử dụng khóa trình duyệt.

+0

Cảm ơn câu trả lời! Tôi hỏi về khóa trình duyệt. Tôi sẽ cập nhật câu hỏi. – fstang

+0

Có một API cho vị trí địa lý bằng javascript. Nó giả sử được ẩn đi vì nó là staten trong hướng dẫn, vì vậy tôi đã làm một chức năng chỉ để làm cho nó bay lặng lẽ - nhưng nó luôn luôn là cùng một chìa khóa! Thông tin về các khóa đó không rõ ràng trong Google Dev, cảm ơn bạn đã làm rõ! – Gustavo

4

Liên kết mà bạn đã đăng cho biết bạn không nên nhúng khóa API trong mã có liên quan đến Nền tảng đám mây của Google. Bạn có thể để lại khóa API cho Google Maps trong mã của mình.

2

Tôi khuyên bạn nên hạn chế các khóa API của mình chỉ được sử dụng bởi các địa chỉ IP & URL liên kết giới thiệu cần: Bằng cách giới hạn địa chỉ IP, URL liên kết giới thiệu, bạn có thể giảm tác động của khóa API bị xâm phạm.

Bạn có thể chỉ định máy chủ và ứng dụng có thể sử dụng từng khóa từ bảng điều khiển bằng cách mở trang Thông tin xác thực và sau đó tạo khóa API mới với cài đặt bạn muốn hoặc chỉnh sửa cài đặt của khóa API.

Điều này sẽ giúp bạn bảo mật các khóa API của mình.

Jeff

0

Trong khi các câu trả lời trên là hữu ích, không ai trong số họ giải quyết lỗ hổng sau:

Một khi người dùng đã truy cập vào API key của bạn, ngay cả khi họ bị hạn chế sử dụng nó chỉ từ tên miền của bạn , họ vẫn có thể sử dụng nó nhiều như họ muốn. Theo nghĩa đen tối nhất, điều này có thể có nghĩa là một triệu lần làm mới trang (và tải bản đồ) trong một khoảng thời gian rất ngắn, do đó đưa bạn vượt quá hạn ngạch sử dụng của bạn.

Tôi chưa gặp bất kỳ giải pháp nào giải quyết vấn đề này. Trừ khi tôi đang thiếu một cái gì đó ...?

Relevant usage limits for google maps javascript api here.

+0

Tôi không nghĩ rằng bất cứ điều gì có thể được thực hiện về điều đó mà không có một số loại thực hiện back-end của riêng để hạn chế búa. –

Các vấn đề liên quan