ข้อมูลทั่วไป:
บริษัท ของฉันได้พัฒนา API แบบ จำกัด อัตรา เป้าหมายของเราคือสองเท่า:
- ตอบ: สร้างระบบนิเวศของนักพัฒนาที่แข็งแกร่งรอบ ๆ ผลิตภัณฑ์ของเรา
- B: แสดงให้เห็นถึงพลังของ API ของเราโดยใช้เพื่อขับเคลื่อนแอปพลิเคชันของเราเอง
คำชี้แจง: ทำไมต้อง จำกัด อัตราเลย?
เราให้คะแนน API ของเรา จำกัด เนื่องจากเราขายเป็นส่วนเสริมให้กับผลิตภัณฑ์ของเรา การเข้าถึง API ของเราแบบไม่ระบุตัวตนมีเกณฑ์ต่ำมากสำหรับการเรียก API ต่อชั่วโมงในขณะที่ลูกค้าแบบชำระเงินของเราได้รับอนุญาตให้โทรได้มากกว่า 1,000 ครั้งต่อชั่วโมงขึ้นไป
ปัญหา:
API แบบ จำกัด อัตราของเรานั้นยอดเยี่ยมสำหรับอีโคซิสเต็มของนักพัฒนา แต่เพื่อให้เราลองใช้เราไม่สามารถอนุญาตให้ จำกัด การ จำกัด อัตราเดียวกันได้ ส่วนหน้าของ API ของเราคือ JavaScript ทั้งหมดทำการเรียก Ajax โดยตรงไปยัง API
ดังนั้นคำถามคือ:
คุณจะรักษาความปลอดภัย API ได้อย่างไรเพื่อให้สามารถลบการ จำกัด อัตราได้โดยที่ในกระบวนการลบการ จำกัด อัตราดังกล่าวไม่สามารถปลอมแปลงได้ง่าย?
โซลูชันที่สำรวจ (และเหตุใดจึงไม่ได้ผล)
ตรวจสอบผู้อ้างอิงกับส่วนหัวของโฮสต์ - มีข้อบกพร่องเนื่องจากผู้อ้างอิงถูกแกล้งได้ง่าย
ใช้HMACเพื่อสร้างลายเซ็นตามคำขอและความลับที่แชร์จากนั้นตรวจสอบคำขอบนเซิร์ฟเวอร์ - มีข้อบกพร่องเนื่องจากความลับและอัลกอริทึมสามารถกำหนดได้ง่ายโดยดูที่ JavaScript ส่วนหน้า
พร็อกซีคำขอและลงนามในคำขอในพร็อกซี - ยังคงมีข้อบกพร่องเนื่องจากพร็อกซีเองเปิดเผย API
คำถาม:
ฉันต้องการความคิดที่ยอดเยี่ยมใน Stack Overflow เพื่อนำเสนอโซลูชันอื่น คุณจะแก้ปัญหานี้อย่างไร?