ฉันควรทำตามขั้นตอนใดเพื่อป้องกันคีย์ Google Maps API


98

ฉันได้รับคีย์ Google Maps API สำหรับโดเมนของฉัน

ตัวอย่างที่ให้ไว้เมื่อฉันได้รับคีย์ของฉันจะแสดงคีย์ที่ฝังอยู่ในพารามิเตอร์คำขอเช่น:

<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>

ฉันขอขอบคุณที่ช่องผู้อ้างอิงในคำขอต้องตรงกับโดเมนของฉันปลอดภัยหรือไม่ที่จะทำให้คีย์ของฉันปรากฏในแท็กสคริปต์และสิ่งที่คล้ายกัน หรือมีขั้นตอนอื่นใดที่ฉันควรทำ?

คำตอบ:


92

เมื่อพิจารณาถึงคีย์นั้นจะต้องรวมอยู่ใน<script>แท็กของหน้า HTML ของคุณในการโหลดไฟล์ JS / ข้อมูลจากเซิร์ฟเวอร์ของ Google คุณไม่สามารถทำได้:

  • คุณต้องใส่ไว้ในไฟล์ HTML ของคุณ
  • ทุกคนสามารถดูสิ่งเหล่านี้ได้

ถึงกระนั้นก็ไม่สำคัญจริงๆ: หากมีใครพยายามใช้คีย์นี้ในโดเมนอื่นที่ไม่ใช่ของคุณพวกเขาจะได้รับการแจ้งเตือน Javascript ซึ่งไม่ดีสำหรับผู้ใช้ของคุณ

ดังนั้น:

  • ไม่มีอะไรที่คุณสามารถทำได้ นี่คือวิธีการทำงาน
  • และไม่มีอะไรมากที่คุณควรกังวลฉันจะบอกว่า

5
ฉันคิดว่าคุณสามารถใช้พร็อกซีในไซต์ของคุณเองซึ่งใช้คีย์เพื่อดึงไฟล์ "จริง" ไม่มีจุดหมายโดยสิ้นเชิงใช่ แต่ฉันคิดว่ามันเป็นไปได้
Tim Sylvester

1
คิดว่ามันคุ้มค่าที่จะตรวจสอบในกรณีที่ฉันพลาดอะไรไป ไชโยสำหรับผู้ที่ตอบ
brabster

@ ทิม: ไม่แน่ใจ; ฉันคาดเดารหัส JS เองหากกดชื่อโดเมนของไซต์ที่แสดงแผนที่และดูเหมือนจะเป็นเรื่องปกติที่จะเปรียบเทียบในลักษณะใดวิธีหนึ่งโดยมีข้อมูลรวมอยู่ในคีย์ - แต่ฉันก็ยังทำ ไม่ลอง. ;;; @Brabster :-)
Pascal MARTIN

2
เป็นเรื่องสำคัญเช่นหากเราต้องการป้องกันการใช้งานคีย์ API ของแบนด์วิดธ์ ตรวจสอบวิธีแก้ปัญหาของฉัน
Ifan Iqbal

3
แล้วถ้าเอา api key ไปใช้ใน APP ของตัวเอง (windows / ios / android) ล่ะ? ฉันสามารถจำลองผู้อ้างอิงและใช้คีย์นี้เพื่อจุดประสงค์ของฉันเองโดยเสียค่าใช้จ่าย!
loki

22

มีการตั้งค่าบนคอนโซล Google API ที่สามารถป้องกันแบนด์วิดธ์ API ของคุณจากการใช้งานโดยโดเมน / ผู้ใช้อื่น คุณสามารถ จำกัด และป้องกันได้โดยใช้ผู้อ้างอิงบนคอนโซล API คีย์ API จะปฏิเสธคำขอโดยไม่มีผู้อ้างอิงที่ตรงกับข้อ จำกัด ของคุณ

นี่คือภาพหน้าจอจาก Google สำหรับคีย์ API ที่ Google frowm ใช้ได้เฉพาะสองโดเมนเท่านั้น ป้อนคำอธิบายภาพที่นี่


3
แล้วผู้ใช้มือถือล่ะ?
Muhammad Umer

หากต้องการเพิ่มรายละเอียดสามารถอ่านได้ที่นี่developers.google.com/maps/…
SIslam

15

แม้ว่าคำถามนี้จะมีอายุไม่กี่ปี แต่ก็เป็นคำถามที่ดีมาก ตามที่ฉันเข้าใจว่าการเปิดเผยคีย์ API แม้ว่าจะตรงกับโดเมนก็ยังอาจนำไปสู่การละเมิดได้ มีโพสต์เกี่ยวกับSecurity Stack Exchangeที่นี่ซึ่งครอบคลุมรายละเอียดเพิ่มเติม

Google เผยแพร่ขั้นตอนที่คุณสามารถทำได้เพื่อหลีกเลี่ยงการละเมิดที่อาจเกิดขึ้นที่นี่:

แนวทางปฏิบัติที่ดีที่สุดสำหรับการใช้ API อย่างปลอดภัย: https://support.google.com/cloud/answer/6310037?hl=th

แม้ว่าผมจะแนะนำการทั้งหมดของมันบนกระดานมีวิธีการที่จะจัดการกับตัวอย่างที่เฉพาะเจาะจงที่ถูกโพสต์โดย Brabster และว่าในการจัดเก็บที่สำคัญในนั้นตัวแปรสภาพแวดล้อม วิธีนี้ทั้งหมดที่คุณต้องทำคือการแทนที่คีย์สำหรับตัวแปรฝั่งเซิร์ฟเวอร์ที่เก็บไว้ในโปรเจ็กต์ของคุณ อย่างไรก็ตามอย่าคอมมิตไฟล์ที่เก็บคีย์ไว้ในที่เก็บสาธารณะ


16
ฉันยังรู้สึกว่าคำตอบนี้ไม่ตรงกับคำถาม แผนที่ API ต้องใช้จาวาสคริปต์ฝั่งเบราว์เซอร์ซึ่งทุกคนที่ดึงข้อมูลหน้านี้จะอ่านได้เสมอ
david van brink

-1

คุณควรใช้แบ็คเอนด์ / ฝั่งเซิร์ฟเวอร์เพื่อป้องกันและจัดการคีย์ ในกรณีของฉันฉันใช้ฝั่งเซิร์ฟเวอร์ Django f / w ซึ่งสามารถให้บริการการโทร ajax เพื่อรับคีย์จากสคริปต์เซิร์ฟเวอร์ / db จากนั้นส่งไปยัง google api


5
หากคีย์ API ของคุณเคยไปถึงเบราว์เซอร์บุคคลที่สามจะดึงคีย์ได้
Moose on the Loose
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.