เพื่อสรุป:
- คุณมีรหัส API ที่ออกให้แก่คุณโดยผู้ขายเพื่อให้คุณสามารถใช้ API ของพวกเขาและคุณมีภาระผูกพันในการป้องกันไม่ให้บุคคลอื่นทราบว่าจะต้องใช้รหัสนี้ในคีย์
- คุณกำลังเรียกใช้ API ของผู้ขายรายนั้น (ซึ่งต้องใช้คีย์ API) ในรหัสแอปพลิเคชันของคุณ
- คุณกำลังปรับใช้แอปพลิเคชันกับระบบที่ลูกค้ามีการเข้าถึงไบนารีและดังนั้นจึงอาจถอดรหัส / ยกเลิกการดักฟังรหัสหรือดักจับทราฟฟิก
วิธีที่ดีที่สุดในการป้องกันการประนีประนอมของคีย์นี้คือการควบคุมมัน ซึ่งหมายความว่าไม่ควรนำไปใช้งานบนเซิร์ฟเวอร์ที่ใครก็ตามที่อยู่นอกเหนือจากคุณสามารถอ่านไบนารีและไม่เคยผ่านลิงก์การสื่อสารที่คุณไม่ได้ควบคุม
ในที่สุดหากไบนารีอยู่นอกเหนือการควบคุมของคุณทุกอย่างในนั้นจะอยู่นอกเหนือการควบคุมของคุณ หากใครบางคนสามารถสกัดกั้นทราฟฟิกพวกเขาสามารถจับคีย์ API ( อาจถึงแม้ว่าคุณกำลังใช้ SSL )
ฉันเห็นสองวิธีหลักในการทำให้สำเร็จซึ่งทั้งสองอย่างนี้ไม่รวมคีย์ API ส่วนตัวของคุณในแอปพลิเคชันที่ปรับใช้ของคุณ:
รับคีย์ API ที่ไม่ซ้ำกันสำหรับการปรับใช้แต่ละครั้ง
สิ่งนี้จะต้องมีความสัมพันธ์เพิ่มเติมกับผู้จำหน่ายซึ่งคุณสามารถรับรหัสหรือให้ลูกค้ารับรหัสได้
อันที่จริงแล้วเป็นเรื่องธรรมดามากเช่นผลิตภัณฑ์ที่ใช้ Google Maps API ผู้สร้างซอฟต์แวร์มีรหัสของตนเองที่พวกเขาใช้ในขณะที่พัฒนา / เรียกใช้สำเนาของพวกเขา แต่พวกเขาไม่ได้รวมไว้ในซอฟต์แวร์และต้องการให้คุณในฐานะผู้ใช้ติดตั้งซอฟต์แวร์ดังกล่าวเพื่อไปที่ Google และรับ API ของคุณเอง สำคัญ. ซอฟต์แวร์มีเพียงตัวเลือกการกำหนดค่าเพื่อตั้งค่าคีย์ Google Maps API ให้ใช้
ในความเป็นจริงผู้ขายจำนวนมากที่ออกคีย์ API ต้องให้คุณทำสิ่งนี้ตามสัญญาดังนั้นคุณอาจปิดเส้นทางที่ไม่ถูกต้องอยู่ดีและนี่อาจเป็นทางออกเดียวที่คุณได้รับอนุญาตให้ใช้ตามข้อกำหนดในการให้บริการของผู้ขายและ / หรือสัญญาทางกฎหมายใด ๆ ที่คุณอาจมีกับพวกเขา
ใช้พร็อกซี่
ตั้งค่าพร็อกซี API ซึ่งแอปพลิเคชันของคุณเรียก API ของคุณ (บนเซิร์ฟเวอร์ของคุณ) และในทางกลับกัน API ของคุณจะเรียก API ของผู้ขายโดยใช้รหัส
คุณอาจต้องการการป้องกันเพิ่มเติมเกี่ยวกับ API ของคุณเช่นบางสิ่งเพื่อให้แน่ใจว่ามีเพียงแอปพลิเคชันของคุณเท่านั้นที่ใช้ สิ่งนี้สามารถทำได้โดย:
- ทำให้ฟังก์ชั่นไม่มีอะไรพิเศษเฉพาะ แต่แอพของคุณสามารถใช้งานได้
- รายการ IP ที่ปลอดภัย
- กลไกการออกใบอนุญาต / การอนุญาตที่คุณมีอยู่แล้วสำหรับเซิร์ฟเวอร์ของคุณ
- ระบบกุญแจ API ของคุณเองที่คุณสามารถออกกุญแจให้กับลูกค้าของคุณ
สิ่งที่คุณควรจำไว้คือคุณอาจไม่ได้รับอนุญาตให้ทำเช่นนี้ ผู้ขายของคุณอาจมีข้อกำหนดในการให้บริการหรือสัญญาทางกฎหมายที่ป้องกันไม่ให้คุณสร้าง "บริการรวม" หรือพร็อกซีดังนั้นคุณต้องตรวจสอบกับสิ่งนั้น
การจัดการพฤติกรรมที่ไม่เหมาะสม
แม้ว่าคีย์ของคุณจะไม่ได้รับอันตราย แต่อย่างใดหากลูกค้าคนหนึ่งของคุณกำลังทำอะไรบางอย่างที่ทำให้ผู้ขายบล็อคคีย์ของคุณทันใดนั้นลูกค้าทั้งหมดของคุณจะถูกปิดการใช้งานและการแก้ไขเพียงอย่างเดียวของคุณก็คือ
ในทำนองเดียวกันถ้าคุณต้องการบล็อกลูกค้าของคุณ (เช่นพวกเขาหยุดจ่ายเงินละเมิดลิขสิทธิ์ซอฟต์แวร์ ฯลฯ ) คุณจะไม่สามารถทำได้โดยไม่ต้องออกการอัปเดตให้คนอื่นแล้วปิดใช้งานคีย์
โลจิสติกส์ของสิ่งนี้สำหรับทุกสิ่งที่นอกเหนือจากกำมือของลูกค้าจะกลายเป็นไม่สามารถป้องกันได้อย่างรวดเร็ว
ไม่ว่าคุณจะทำหน้าที่เป็นพร็อกซีหรือมีคีย์เฉพาะสำหรับการติดตั้งแต่ละครั้งคุณสามารถจัดการกับสถานการณ์เหล่านี้ได้อย่างง่ายดาย (และไม่มีผลกระทบต่อผู้อื่นเล็กน้อย)
การพยายามปกป้องคีย์ขณะที่มันฝังอยู่ในซอฟต์แวร์ของคุณนั้นเป็นความพยายามที่ไร้ประโยชน์ ไม่ว่าคุณจะทำอะไรผู้โจมตีที่เข้าถึงไบนารีแหล่งที่มาและ / หรือช่องทางการสื่อสารและมีความมุ่งมั่นมากพอที่จะได้รับกุญแจพวกเขาจะสามารถทำได้
ดังนั้นอย่าฝังไว้ "การย้ายที่ชนะอย่างเดียวไม่สามารถทำได้"