ตัวอย่างนี้มีแง่มุมต่าง ๆ มากมาย ฉันจะพูดถึงสองประเด็นที่ฉันไม่คิดว่าได้รับการคุ้มครองอย่างชัดเจนที่อื่น
ปกป้องความลับในการขนส่ง
สิ่งแรกที่ควรทราบคือการเข้าถึง Dropbox API โดยใช้กลไกการตรวจสอบสิทธิ์แอพนั้นคุณต้องส่งคีย์และความลับของคุณ การเชื่อมต่อคือ HTTPS ซึ่งหมายความว่าคุณไม่สามารถดักจับทราฟฟิกโดยไม่ทราบว่าใบรับรอง TLS เพื่อป้องกันไม่ให้บุคคลดักจับและอ่านแพ็กเก็ตในการเดินทางจากอุปกรณ์พกพาไปยังเซิร์ฟเวอร์ สำหรับผู้ใช้ทั่วไปเป็นวิธีที่ดีในการรับรองความเป็นส่วนตัวของการรับส่งข้อมูล
สิ่งที่ไม่ดีคือป้องกันผู้ประสงค์ร้ายที่ดาวน์โหลดแอพและตรวจสอบปริมาณการใช้งาน เป็นเรื่องง่ายมากที่จะใช้พร็อกซีแบบแมน - อิน - มิดสำหรับการรับส่งข้อมูลเข้าและออกจากอุปกรณ์พกพา มันจะต้องไม่มีการถอดหรือวิศวกรรมย้อนกลับของรหัสเพื่อแยกคีย์แอปและความลับในกรณีนี้เนื่องจากลักษณะของ Dropbox API
คุณสามารถทำตรึงซึ่งการตรวจสอบว่า TLS ที่คุณได้รับจากเซิร์ฟเวอร์เป็นหนึ่งที่คุณคาดหวัง สิ่งนี้จะเพิ่มการตรวจสอบให้กับลูกค้าและทำให้การสกัดกั้นทราฟฟิกยากขึ้น สิ่งนี้จะทำให้ยากต่อการตรวจสอบการจราจรในเที่ยวบิน แต่การตรวจสอบการตรึงเกิดขึ้นในไคลเอนต์ดังนั้นจึงเป็นไปได้ที่จะปิดการทดสอบการปักหมุด มันทำให้มันยากขึ้น
ปกป้องความลับที่เหลือ
ในขั้นตอนแรกการใช้สิ่งที่คล้ายกับproguardจะช่วยให้ชัดเจนน้อยลงเมื่อมีการเก็บความลับ นอกจากนี้คุณยังสามารถใช้ NDK เพื่อเก็บคีย์และความลับและส่งคำขอโดยตรงซึ่งจะช่วยลดจำนวนคนที่มีทักษะที่เหมาะสมในการดึงข้อมูล การทำให้งงงวยเพิ่มเติมสามารถทำได้โดยไม่เก็บค่าโดยตรงในหน่วยความจำระยะเวลาใด ๆ คุณสามารถเข้ารหัสและถอดรหัสก่อนใช้ตามคำแนะนำอื่น
ตัวเลือกขั้นสูงเพิ่มเติม
หากคุณหวาดระแวงเกี่ยวกับการใส่ความลับไว้ที่ใดก็ได้ในแอปของคุณและคุณมีเวลาและเงินในการลงทุนในโซลูชันที่ครอบคลุมมากขึ้นคุณอาจพิจารณาจัดเก็บข้อมูลประจำตัวบนเซิร์ฟเวอร์ของคุณ (สมมติว่าคุณมี) วิธีนี้จะเพิ่มเวลาแฝงของการโทรไปยัง API เนื่องจากจะต้องสื่อสารผ่านเซิร์ฟเวอร์ของคุณและอาจเพิ่มค่าใช้จ่ายในการเรียกใช้บริการของคุณเนื่องจากปริมาณข้อมูลที่เพิ่มขึ้น
จากนั้นคุณต้องตัดสินใจว่าจะสื่อสารกับเซิร์ฟเวอร์ของคุณอย่างไรเพื่อให้แน่ใจว่าได้รับการปกป้อง นี่เป็นสิ่งสำคัญเพื่อป้องกันปัญหาเดียวกันทั้งหมดที่เกิดขึ้นอีกครั้งด้วย API ภายในของคุณ กฎง่ายๆที่ฉันสามารถให้ได้ก็คืออย่าส่งความลับใด ๆ โดยตรงเนื่องจากการคุกคามจากคนกลาง แต่คุณสามารถลงชื่อเข้าใช้ทราฟฟิกโดยใช้ความลับของคุณและตรวจสอบความถูกต้องของคำขอใด ๆ ที่มายังเซิร์ฟเวอร์ของคุณ วิธีหนึ่งที่เป็นมาตรฐานในการทำเช่นนี้คือการคำนวณ HMAC ของข้อความที่เป็นความลับ ฉันทำงานที่ บริษัท ที่มีผลิตภัณฑ์รักษาความปลอดภัยซึ่งทำงานในสาขานี้ด้วยเหตุนี้สิ่งต่าง ๆ ที่ฉันสนใจ อันที่จริงนี่เป็นบทความบล็อกจากหนึ่งในเพื่อนร่วมงานของฉันที่ทำเรื่องส่วนใหญ่
ฉันควรทำอย่างไร
ด้วยคำแนะนำด้านความปลอดภัยเช่นนี้คุณต้องตัดสินใจเรื่องค่าใช้จ่าย / ผลประโยชน์ว่าคุณต้องการให้ใครบางคนบุกเข้ามาได้ยากเพียงใดถ้าคุณเป็นธนาคารที่ปกป้องลูกค้านับล้านงบประมาณของคุณแตกต่างจากคนที่สนับสนุนแอป เวลาว่าง. แทบเป็นไปไม่ได้ที่จะป้องกันไม่ให้ใครบางคนทำลายระบบรักษาความปลอดภัยของคุณ แต่ในทางปฏิบัติมีเพียงไม่กี่คนที่ต้องการเสียงระฆังและเสียงนกหวีดและด้วยความระมัดระวังขั้นพื้นฐานบางอย่างคุณจึงสามารถเดินทางได้ไกล