Làm cách nào để sử dụng Khóa API của Google một cách an toàn


78

Vì vậy, tôi đang sử dụng API Google Maps trong dự án đầu tiên mà tôi đang thực hiện ... Vì vậy, có, tôi là người mới và tôi rất tiếc nếu điều này là cơ bản hoặc hiển nhiên nhưng tôi không thể tìm thấy câu trả lời hoặc hướng rõ ràng. Dưới đây là tài liệu tôi tìm thấy từ Google về cách sử dụng Khóa API một cách an toàn.


Các phương pháp hay nhất để sử dụng khóa API một cách an toàn

Khi bạn sử dụng khóa API trong các ứng dụng của mình, hãy lưu ý giữ chúng an toàn. Việc để lộ thông tin xác thực của bạn một cách công khai có thể dẫn đến việc tài khoản của bạn bị xâm phạm, điều này có thể dẫn đến các khoản phí không mong muốn cho tài khoản của bạn. Để giữ khóa API của bạn an toàn, hãy làm theo các phương pháp hay nhất sau:

Không nhúng các khóa API trực tiếp vào mã: Các khóa API được nhúng trong mã có thể vô tình bị công khai — ví dụ: nếu bạn quên xóa khóa khỏi mã mà bạn chia sẻ. Thay vì nhúng các khóa API vào các ứng dụng của bạn, hãy lưu trữ chúng trong các biến môi trường hoặc trong các tệp bên ngoài cây nguồn của ứng dụng của bạn. Không lưu trữ khóa API trong tệp bên trong cây nguồn của ứng dụng: Nếu bạn lưu trữ khóa API trong tệp, hãy giữ các tệp bên ngoài cây nguồn của ứng dụng để giúp đảm bảo khóa của bạn không nằm trong hệ thống kiểm soát mã nguồn của bạn. Đ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 như GitHub. Hạn chế các khóa API của bạn chỉ được sử dụng bởi địa chỉ IP, URL liên kết giới thiệu và ứng dụng di động cần chúng: Bằng cách hạn chế địa chỉ IP, URL liên kết giới thiệu, và các ứng dụng di động có thể sử dụng từng khóa, 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 các 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 đăng nhập rồi 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. Xóa các khóa API không cần thiết: Để giảm thiểu nguy cơ bị tấn công, hãy xóa mọi khóa API mà bạn không cần nữa. Tạo lại khóa API của bạn theo định kỳ: Bạn có thể tạo lại khóa API từ trang Thông tin đăng nhập của Bảng điều khiển nền tảng đám mây bằng cách nhấp vào Tạo lại khóa cho mỗi khóa. Sau đó, cập nhật các ứng dụng của bạn để sử dụng các khóa mới được tạo. Các khóa cũ của bạn sẽ tiếp tục hoạt động trong 24 giờ sau khi bạn tạo khóa thay thế. Xem lại mã của bạn trước khi phát hành công khai:


Bây giờ vấn đề của tôi là tôi không thể tìm ra cách kết hợp Bản đồ Google trên trang web của mình mà không cần trực tiếp đưa nó vào mã. Ngay bây giờ API của tôi nằm trong index.html của tôi như sau:

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

Nhưng một lần nữa, điều này nằm trực tiếp trong mã của tôi để mọi người thấy rằng tôi tin là sai cách.


Câu trả lời:


71

Đối với API Javascript của Google Maps v3, các khóa phải được công khai trên trang của bạn. Văn bản áp dụng là:

Hạn chế các khóa API của bạn chỉ được sử dụng bởi các địa chỉ IP, URL liên kết giới thiệu và các ứng dụng dành cho thiết bị di động cần chúng

Truy cập Bảng điều khiển API của Google và tạo khóa, giới hạn khóa trong các URL mà bạn sở hữu (hoặc muốn đặt bản đồ vào) để ngăn chặn "hành vi trộm cắp" hạn ngạch.


21
hạn chế nó đến URL không an toàn kể từ http giới thiệu có thể dễ dàng giả mạo
Danny Dương

@Danny Ocean, Nếu giới hạn nó thành một URL không an toàn (vì liên kết giới thiệu http có thể bị giả mạo hoặc ai đó có thể chạy api-key của bạn trên hộp của họ với tệp máy chủ trỏ url của bạn đến máy chủ localhost của họ), thì điều gì là tốt nhất để bảo mật Các khóa API của Google như API Google Maps của Javascript hiển thị khóa api cho khách hàng / người dùng cuối (thay vì khóa api phía máy chủ ẩn)? Tôi không nghĩ rằng mình đã thấy các cách khác để hạn chế khóa trong Google Dev Console (theo IP, nhưng điều đó sẽ không hoạt động đối với các khóa api phía máy khách vì người dùng cuối có các ips khác nhau cho một trang web công khai).
armyofda12mnkeys,

1
@ armyofda12mnkeys khi tôi nghiên cứu chủ đề này, cách an toàn duy nhất để làm điều đó (vì bảo mật, tôi có nghĩa là không thể đánh cắp khóa API) sẽ là proxy ngược. Thật không may, khi sử dụng Google JS SDK, nó sẽ không thực sự hoạt động. Bạn sẽ có thể tìm nạp SDK mà không để lộ khóa API, nhưng khi SDK được tải xuống ứng dụng khách, nó sẽ đưa ra các yêu cầu bằng cách sử dụng khóa API của bạn, ví dụ như có thể dễ dàng quan sát thấy thông qua các công cụ dành cho nhà phát triển trình duyệt. Tuy nhiên, nếu bạn sử dụng API REST thay vì SDK, bạn có thể ủy quyền các yêu cầu này mà không để lộ khóa API. Tuy nhiên, không chắc liệu google có cung cấp API REST tương ứng hay không.
Danny Ocean

18

Các khóa API thực hành tốt nhất bài viết bạn tham khảo chỉ cung cấp hướng dẫn chung cho việc sử dụng khóa API, và với các API phải đối mặt với một số người dùng cuối, chẳng hạn như Google Maps API JavaScript, bạn không thể tránh phơi bày khóa API cho người dùng cuối.

Do đó, trong một ứng dụng API Maps JavaScript công khai, bạn nên thêm giới hạn liên kết giới thiệu vào bất kỳ khóa nào được sử dụng trong hệ thống sản xuất, đặc biệt là các khóa giao diện công khai và chỉ ủy quyền cho miền, máy chủ lưu trữ hoặc thậm chí URL tệp đầy đủ của ứng dụng của bạn.

Khi bạn tạo khóa của mình trong Bảng điều khiển API của Google và chọn thông tin xác thực đã thiết lập cho API JavaScript của Maps, trình hướng dẫn sẽ hướng dẫn bạn cách bảo mật khóa và sẽ nhắc bạn về các URL bạn muốn cho phép.

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.