ทันทีที่คุณปล่อยแอปพลิเคชันมันอาจถูกออกแบบวิศวกรรมย้อนกลับ ซึ่งหมายความว่าไม่มีอะไรที่คุณสามารถทำได้เพื่อให้ได้รับการปกป้อง 100% หากมีการแจกจ่ายแอปพลิเคชันเดียวกัน (ไบนารีเดียวกันการตั้งค่าเดียวกัน) ให้กับผู้ใช้ทั้งหมดของคุณ
หากคุณสามารถปรับแต่งแอปพลิเคชันสำหรับผู้ใช้ทุกคนคุณอาจมีโอกาสที่จะไม่อนุญาตให้แอปพลิเคชันอื่นใช้ API ของคุณ แต่อย่างน้อยก็ จำกัด แอปพลิเคชันนี้ตามจำนวนคำขอที่สามารถทำได้กับ API
ลองนึกภาพสคีมาดังต่อไปนี้:
- ลูกค้าเชื่อมต่อและส่งตัวระบุที่ไม่ซ้ำกัน (หนึ่งตัวระบุโดยผู้ใช้)
- เซิร์ฟเวอร์ตอบกลับโดยส่งการท้าทายที่เข้ารหัสด้วยรหัสสาธารณะ กุญแจสาธารณะนี้เชื่อมโยงกับตัวระบุเฉพาะที่ส่งไปก่อนหน้านี้
- ลูกค้าแก้ปัญหาด้วยการถอดรหัสข้อมูลโดยใช้กุญแจส่วนตัวและส่งความลับที่ถอดรหัสแล้วในแบบธรรมดากลับไปที่เซิร์ฟเวอร์
- เซิร์ฟเวอร์ตรวจสอบว่าข้อมูลลับที่ส่งตรงกับข้อมูลที่สร้างขึ้นตั้งแต่แรก
นักพัฒนาที่จะแฮ็กแอปพลิเคชันของคุณและรับรหัสส่วนตัวสำเร็จจะสามารถใช้ API ของคุณจากแอปพลิเคชันของเขาเอง แต่เขาจะเป็นตัวระบุสำหรับเซิร์ฟเวอร์ของคุณ
หากผู้ใช้รายเดียวกันสามารถทำคำขอ 10,000 คำขอให้กับ API ของคุณต่อวันและโดยเฉลี่ยผู้ใช้ที่ใช้งานอยู่ 2,000 คำขอต่อวันก็หมายความว่าผู้พัฒนารายนี้จะสามารถใช้แอปพลิเคชันของเขาเองและอาจมอบให้กับเพื่อน ๆ เขาจะไม่สามารถพูดขายให้กับคนหลายพันคนเพียงเพราะมันจะทำงานเพียงไม่กี่นาทีในตอนเช้า
ในขณะที่สิ่งนี้ช่วยได้ แต่ก็ไม่สามารถพิสูจน์ได้ 100% จะทำอย่างไรถ้าแฮ็กเกอร์ค้นหาวิธีดึงคีย์ส่วนตัวออกจากแอพของคุณเมื่อติดตั้งแอพของเขาเองบนอุปกรณ์
หมายเหตุด้านข้างที่ไม่ตอบคำถามของคุณ แต่ยังอาจมีประโยชน์: อย่าคิดเกี่ยวกับ API เป็นเครื่องมือสำหรับผลิตภัณฑ์หลักของคุณ (แอปพลิเคชันมือถือ) คิดว่ามันเป็นผลิตภัณฑ์ชั้นหนึ่งตัวเองผลิตภัณฑ์ที่อาจจะจ่าย รูปแบบเดียวกันนี้ใช้มานานหลายปีโดย Amazon และ Google มันเริ่มใช้งานโดย Microsoft กับ Azure เป็นต้น
ทันทีที่คุณพิจารณา API ไม่ใช่เครื่องมือรองลดความเป็นทาสสำหรับแอพมือถือใหม่ที่เป็นประกาย แต่เป็นผลิตภัณฑ์จริงในระดับเดียวกับแอปพลิเคชันที่ผู้ใช้เห็นจริง ๆ คุณเริ่มคิดถึงการปกป้อง API จากน้อยลง การใช้งานโดยแอพอื่น ๆ และอื่น ๆ เกี่ยวกับการสร้างรายได้ของ APIเอง API ดังกล่าวสามารถใช้งานได้โดยแอปของคุณซึ่งเป็นลูกค้าหรือแอปอื่น ๆ ที่พัฒนาโดยทุกคน สิ่งนี้มีประโยชน์หลายประการ:
การสร้าง API เพื่อให้แอปพลิเคชันของคุณใช้งานได้ยากและมีราคาแพง เวลาและเงินนี้สามารถใช้กับบางสิ่งที่มีประโยชน์มากขึ้น
การเปิด API ของคุณสู่สาธารณะจะมีประโยชน์อย่างยิ่งต่อทั้งคุณและโลก ลองนึกภาพว่าคุณเป็นสถาปนิกที่ยอดเยี่ยมและนักพัฒนาที่ยอดเยี่ยมดังนั้นคุณจึงสร้าง API ที่ยอดเยี่ยมอย่างน่าอัศจรรย์ แต่ทักษะการออกแบบภาพของคุณดูดและคุณไม่เข้าใจอะไรเลยเกี่ยวกับการออกแบบการโต้ตอบ ฯลฯ หากคุณซ่อน API ของคุณไว้ สิ่งที่ผู้คนจะรู้ก็คือคุณได้สร้างแอปพลิเคชันมือถือซึ่งใช้ไม่ได้และน่าเกลียด หาก API ของคุณเป็นแบบสาธารณะผู้พัฒนารายอื่นจะถูกดึงดูดด้วยคุณภาพและเขียนแอปพลิเคชันที่ยอดเยี่ยมเพื่อนำเงินมาให้คุณมากมาย
คุณไม่เคยคิดเลยว่าคนอื่นจะใช้ API ของคุณอย่างไร นี่คือสิ่งที่เกิดขึ้นกับ Kinect เดิม Microsoft สร้าง Kinect สำหรับเกม เมื่อ Microsoft เปิด API ให้กับสาธารณชนพวกเขาไม่เคยคิดเลยว่ามันจะถูกใช้ในอีกไม่กี่ปีต่อมาโดยแอปพลิเคชันทางวิทยาศาสตร์ภาคสุขภาพและอื่น ๆ มันคล้ายกับ web APIs: นักพัฒนาจำนวนมากกำลังใช้งานอยู่