วิธีปกป้อง REST API สำหรับแอปพลิเคชันมือถือที่เชื่อถือได้เท่านั้น


96

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

เท่าที่ฉันทราบ HTTPS เป็นเพียงการตรวจสอบความถูกต้องของเซิร์ฟเวอร์ที่คุณสื่อสารด้วย ฉันกำลังจะใช้ HTTPS เพื่อเข้ารหัสข้อมูล

มีวิธีการทำสิ่งนี้หรือไม่?

อัปเดต: ผู้ใช้สามารถดำเนินการแบบอ่านอย่างเดียวซึ่งไม่ต้องการให้ผู้ใช้ลงชื่อเข้าใช้ แต่ยังสามารถทำการเขียนได้ซึ่งผู้ใช้ต้องลงชื่อเข้าใช้ (การรับรองความถูกต้องโดย Access Token) ในทั้งสองกรณีฉันต้องการให้ API ตอบกลับคำขอที่มาจากแอปพลิเคชันมือถือที่เชื่อถือได้เท่านั้น

API จะใช้สำหรับการลงทะเบียนบัญชีใหม่ผ่านแอปพลิเคชันมือถือ

อัปเดต 2:ดูเหมือนว่ามีคำตอบมากมายสำหรับเรื่องนี้ แต่ฉันก็ไม่รู้เหมือนกันว่าจะตอบคำตอบแบบใด บางคนบอกว่าสามารถทำได้บางคนบอกว่าทำไม่ได้


HTTPS ใช้ SSL (และ TLS) SSL / TLS สามารถใช้กับการตรวจสอบลูกค้า
atk

คุณหมายถึงใบรับรอง SSL ในฝั่งไคลเอ็นต์หรือไม่ ฉันคิดว่านั่นคือสิ่งที่ฉันกำลังมองหายกเว้นฉันไม่รู้ว่าจะเป็นไปได้ไหมในแอปพลิเคชันมือถือ (Android และ iOS) ใบรับรองลูกค้าจะถูกเก็บไว้ที่ไหน? ที่เก็บอุปกรณ์, หน่วยความจำ?
Supercell

SSL จะรับรองอุปกรณ์มือถือไม่ใช่แอปพลิเคชันมือถือ
Morons

@Supercell: ฉันจะเพิ่มคำตอบ
atk

คำตอบ:


48

คุณทำไม่ได้

คุณไม่สามารถยืนยันเอนทิตีหรือนิติบุคคลใด ๆไม่ว่าจะเป็นบุคคลไคลเอนต์ฮาร์ดแวร์หรือซอฟต์แวร์ไคลเอ็นต์ คุณสามารถตรวจสอบว่าสิ่งที่พวกเขาบอกคุณนั้นถูกต้องแล้วถือว่าความซื่อสัตย์สุจริต

ตัวอย่างเช่น Google รู้ได้อย่างไรว่าฉันลงชื่อเข้าใช้บัญชี Gmail ของฉันอย่างไร พวกเขาก็ถามฉันชื่อผู้ใช้และรหัสผ่านให้ตรวจสอบว่าแล้ว ถือว่าความซื่อสัตย์สุจริตเพราะใครจะมีข้อมูลที่? ในบางจุดของ Google ตัดสินใจว่านี้ไม่เพียงพอและเพิ่มการตรวจสอบพฤติกรรม (มองหาพฤติกรรมแปลก ๆ ) แต่ที่ยังคงอาศัยอยู่กับคนที่จะทำพฤติกรรมแล้วการตรวจสอบพฤติกรรม

นี่คือสิ่งเดียวกันกับการตรวจสอบลูกค้า คุณสามารถตรวจสอบพฤติกรรมของลูกค้า แต่ไม่ใช่ลูกค้าเอง

ดังนั้นด้วย SSL คุณสามารถตรวจสอบว่าลูกค้ามีใบรับรองที่ถูกต้องหรือไม่ดังนั้นคุณสามารถติดตั้งแอพของคุณรับใบรับรองจากนั้นเรียกใช้รหัสใหม่ทั้งหมด

ดังนั้นคำถามคือ: ทำไมสิ่งนี้สำคัญมาก หากนี่เป็นข้อกังวลจริงฉันจะถามตัวเลือกของคุณกับลูกค้าที่อ้วน บางทีคุณควรไปกับเว็บแอป (ดังนั้นคุณไม่จำเป็นต้องเปิดเผย API ของคุณ)

ดูเพิ่มเติมที่: การเอาชนะการตรวจสอบความถูกต้องใบรับรอง SSL สำหรับแอปพลิเคชัน Android

และ: ใบรับรอง SSL ของไคลเอนต์ปลอดภัยแค่ไหนในแอปมือถือ


1
ฉันใช้ใบรับรองไคลเอ็นต์กับฮาร์ดแวร์ที่เก็บใบรับรองไว้ในไดรฟ์ที่เข้ารหัสโดยระบบปฏิบัติการ แต่ถึงอย่างนั้นก็ไม่มีใครเชื่อว่ามันเข้าใจผิดได้ เป้าหมายคือการทำให้เป็นเรื่องยากสำหรับผู้ใช้ทั่วไป
Steven Burnap

1
@Morons: เว็บแอปจะแก้ปัญหานี้ แต่เราคิดว่าผู้ใช้มีแนวโน้มที่จะใช้แอพที่เป็นเจ้าของมากกว่า webapp (โปรดแก้ไขให้ฉันถ้าข้อสันนิษฐานของเราผิด) เหตุผลที่เรื่องนี้สำคัญมากเพราะ API ให้สิทธิ์ผู้ใช้ในการเข้าถึงส่วนต่างๆของฐานข้อมูลของเราซึ่งมีข้อมูลจำนวนมากที่เรารวบรวมผ่านการทำงานหลายเดือน เป็นข้อมูล บริษัท หรือผู้ใช้อื่น ๆ ที่สามารถใช้เพื่อวัตถุประสงค์ของตนเองได้อย่างง่ายดาย หากไม่มีการรักษาความปลอดภัยให้กับลูกค้าเราจะไม่ทราบว่าใครกำลังใช้งาน (ต่อเรา)
Supercell

6
แอปพลิเคชันไม่สามารถแก้ปัญหาได้ การปรับเปลี่ยนฝั่งไคลเอ็นต์ของเว็บแอปเป็นเรื่องที่ค่อนข้างง่ายและทำให้ทุกอย่างที่คุณต้องการ
Steven Burnap

5
@Supercell คุณไม่สามารถแสดงข้อมูลใครบางคนแล้วหยุดพวกเขาจากการแบ่งปัน หากคุณไม่ต้องการให้ใครบางคนมีข้อมูลคุณจะไม่ให้มัน (แสดง) แก่พวกเขา
Morons

ฉันเห็นด้วย แต่ด้วยเหตุผลอื่น คุณสามารถบอกถ้าคุณมีการควบคุมผ่านอุปกรณ์ที่อาร์เอสเหมือนen.wikipedia.org/wiki/SecurID แต่โทรศัพท์มือถือไม่ใช่สิ่งที่สามารถควบคุมได้ (พวกเขาสามารถยอมรับสิ่งที่แนบมาเช่นคีย์เสริมหรืออะไรก็ได้)
imel96

31

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

ก่อนอื่นจะมีข้อเสียที่ fNek พูดถึงในคำตอบก่อนหน้านี้ - แอปไคลเอ็นต์ของคุณอยู่ในมือของผู้ใช้ที่อาจเป็นศัตรู พวกเขาสามารถตรวจสอบได้ตรวจสอบการสื่อสารของพวกเขาถอดรหัสของพวกเขา ไม่มีอะไรที่ฉันจะแนะนำจะช่วยให้คุณรับประกันได้ว่ามีใครบางคนไม่ทำวิศวกรรมย้อนกลับลูกค้าของคุณและละเมิด REST API ของคุณ แต่ควรวางสิ่งกีดขวางต่อหน้าความพยายามชั่วคราว

อย่างไรก็ตามวิธีการทั่วไปคือ:

  • ลูกค้ามีความลับ
  • เมื่อทำการร้องขอมันจะเชื่อมต่อพารามิเตอร์การร้องขอกับความลับและแฮชผลลัพธ์
  • แฮชนี้จะถูกส่งไปพร้อมกับคำขอและตรวจสอบโดยเซิร์ฟเวอร์

เช่นจินตนาการGETคำขอ/products/widgets

สมมติว่าความลับของลูกค้าคือ "OH_HAI_I_IZ_SECRET"

เชื่อมต่อกริยา HTTP และ URL และความลับเข้าด้วยกัน:

GET/products/widgetsOH_HAI_I_IZ_SECRET

และใช้แฮชSHA-1ของสิ่งนั้น:

4156023ce06aff06777bef3ecaf6d7fdb6ca4e02

จากนั้นส่งไปตามดังนั้นคำขอจะเป็น:

GET /products/widgets?hash=4156023ce06aff06777bef3ecaf6d7fdb6ca4e02

ในที่สุดเพื่อป้องกันไม่ให้ใครบางคนเล่นซ้ำการร้องขอแต่ละครั้งอย่างน้อยก็ให้ใช้การประทับเวลาด้วยและเพิ่มเข้าไปในพารามิเตอร์และแฮช เช่นตอนนี้ในเวลา Unix คือ 1384987891. เพิ่มเข้าไปใน concatenation:

GET/products/widgetsOH_HAI_I_IZ_SECRET1384987891

แฮช:

2774561d4e9eb37994d6d71e4f396b85af6cacd1

และส่ง:

GET /products/widgets?time=1384987891&hash=2774561d4e9eb37994d6d71e4f396b85af6cacd1

เซิร์ฟเวอร์จะตรวจสอบแฮชและตรวจสอบว่าการประทับเวลาเป็นปัจจุบัน (เช่นภายใน 5 นาทีเพื่ออนุญาตให้นาฬิกาไม่ซิงค์กันอย่างสมบูรณ์)

คำเตือน! เนื่องจากคุณกำลังพูดถึงแอพมือถือมีความเสี่ยงที่แน่นอนว่าโทรศัพท์ของใครบางคนจะมีนาฬิกาผิด หรือเขตเวลาผิด หรือบางสิ่งบางอย่าง. การเพิ่มเวลาลงในแฮชอาจทำให้ผู้ใช้ที่ชอบด้วยกฎหมายบางคนใช้ความคิดนั้นด้วยความระมัดระวัง


6
กลไกการแฮ็กนี้สามารถเข้าใจได้โดยโปรแกรมเมอร์เมื่อใดก็ตามที่เขาไม่ได้รวบรวม apk
Punith Raj

8
@PunithRaj แน่นอนฉันพูดถึงเรื่องนี้ในย่อหน้าที่สอง "ไม่มีอะไรที่ฉันจะแนะนำจะช่วยให้คุณรับประกันได้ว่ามีใครบางคนไม่ทำวิศวกรรมย้อนกลับลูกค้าของคุณและใช้ REST API ของคุณในทางที่ผิด แต่มันควรจะเป็นอุปสรรคต่อความพยายามทั่วไป
Carson63000

สำหรับคำเตือนกำลังใช้ UTC บนเซิร์ฟเวอร์และมือถือนี่เป็นการแก้ปัญหาใช่มั้ย
shareef

@ Carson63000 - ดังนั้นมีวิธีที่เป็นรูปธรรมหรือไม่? โดยเฉพาะอย่างยิ่งสำหรับ API การลงทะเบียนผู้ใช้ซึ่งจะต้องเปิดต่อสาธารณะ (ผู้ใช้จำเป็นต้องลงทะเบียนก่อนจึงจะสามารถลงชื่อเข้าใช้ไม่ว่าจะบนเว็บหรือบนแอพมือถือ) และสามารถกำหนดเป้าหมายโดยบอทเพื่อสร้างผู้ใช้ปลอมนับพัน
Tohid

17

สำหรับทุกคนที่สนใจบน Android คุณสามารถตรวจสอบว่าคำขอที่คุณได้รับนั้นส่งมาจากแอพของคุณ

กล่าวโดยย่อเมื่อคุณอัปโหลดแอปของคุณไปที่ Google คุณจะต้องลงชื่อด้วยรหัสเฉพาะที่คุณเท่านั้นที่รู้จัก (และ google)

กระบวนการตรวจสอบจะไป (ish) เช่นนี้:

  1. แอปของคุณไปที่ google และขอโทเค็นการตรวจสอบสิทธิ์
  2. แอปของคุณส่งโทเค็นอย่างปลอดภัยไปยังส่วนหลังของคุณ
    1. ปลายด้านหลังของคุณไปที่ google และตรวจสอบโทเค็นการตรวจสอบความถูกต้องที่ได้รับจากแอปของคุณ
    2. ปลายด้านหลังของคุณจากนั้นตรวจสอบว่ารหัสที่ไม่ซ้ำกันที่แอปของคุณได้ลงชื่อเข้าใช้ตรงกันหรือไม่ถ้าไม่หมายความว่านั่นไม่ใช่แอปของคุณ ...

บล็อกเต็มรูปแบบที่อธิบายถึงวิธีการใช้งานสามารถพบได้ที่นี่: http://android-developers.blogspot.co.il/2013/01/verifying-back-end-calls-from-android.html


1
คำตอบที่ดีอย่างไรก็ตามผู้ใช้ที่ประสงค์ร้ายยังคงสามารถปลอมแปลงแอปได้ด้วยความพยายามเพียงพอ แต่ไม่มีสิ่งใดปลอดภัยอย่างแท้จริงมันไม่ใช่เรื่องของถ้าเพียงเรื่องเมื่อ
mateos

1
สำหรับ iOS มีตัวเลือกนี้: ลิงก์ DeviceCheck APIs ยังให้คุณตรวจสอบว่าโทเค็นที่คุณได้รับมาจากอุปกรณ์ Apple ของแท้ที่แอพของคุณดาวน์โหลดแล้ว
Iwaz

มันต้องมีบัญชี (อีเมล)
25

5

ตกลงดังนั้นจึงเป็นมูลค่าการกล่าวขวัญก่อนที่ฉันจะเริ่มต้นว่าสำหรับการใช้งานส่วนใหญ่นี้เป็น overkill อย่างมหาศาล สำหรับกรณีการใช้งานส่วนใหญ่การมีใบรับรองที่ถูกต้องเพียงใบเดียวและ / หรือโทเค็นนั้นมากเกินพอ ถ้ามันเกี่ยวข้องกับการทำอะไรที่ยากเช่นการแยกแอพของคุณแฮ็กเกอร์ส่วนใหญ่จะไม่สนใจเว้นแต่คุณจะให้ข้อมูลที่มีค่ามาก แต่เดี๋ยวก่อนความสนุกในคำตอบนั้นคืออะไร?

ดังนั้นสิ่งที่คุณสามารถทำได้คือตั้งค่าการเข้ารหัสแบบอสมมาตรคล้ายกับลายเซ็นดิจิตอลที่ใช้ในการเซ็นชื่อโปรแกรม แต่ละแอปสามารถมีใบรับรองบุคคลที่ออกโดย CA เดียวและตรวจสอบเมื่อผู้ใช้ของคุณเชื่อมต่อ (ทั้งเมื่อลงทะเบียนครั้งแรกหรือเมื่อติดตั้งครั้งแรก) เมื่อใบรับรองนั้นได้รับการรับรองความถูกต้องแล้วคุณสามารถเพิ่มความปลอดภัยให้แอปพลิเคชันของคุณเพิ่มเติมได้โดยการลงทะเบียนใบรับรองนั้นว่าถูกต้องสำหรับรหัสอุปกรณ์หนึ่งรายการ (เช่น Android ID )


5

ตามที่ @Morons พูดถึงในคำตอบของเขามันเป็นเรื่องยากมากที่จะตรวจสอบเอนทิตีที่ปลายอีกด้านของการเชื่อมต่อ

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

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

คุณสามารถทำตามขั้นตอนต่าง ๆ เพื่อทำให้การดึงข้อมูลลับทำได้ยากขึ้นโดยการทำให้สับสนในการปฏิบัติการ เครื่องมืออย่าง ProGuard ซึ่งเป็น obfuscator สำหรับ Java สามารถช่วยได้ฉันไม่รู้มากเกี่ยวกับ obfuscation ในภาษาอื่น แต่มีเครื่องมือที่คล้ายกัน การใช้การเชื่อมต่อ TLS ช่วยป้องกันไม่ให้ผู้คนสอดแนมในทราฟฟิกของคุณ แต่ไม่ได้ป้องกันการโจมตีของ MITM การปักหมุดสามารถช่วยแก้ไขปัญหานั้นได้

ฉันทำงานให้กับ บริษัท ที่เรียกว่า CriticalBlue (การเปิดเผยอย่างเต็มรูปแบบ!) ซึ่งมีผลิตภัณฑ์ชื่อApproovที่พยายามแก้ไขปัญหาความไว้วางใจนี้ ใช้งานได้กับ Android / iOS ในปัจจุบันและมีกลไกสำหรับเซิร์ฟเวอร์ของเราเพื่อตรวจสอบความสมบูรณ์ของแอพไคลเอ็นต์ มันทำได้โดยการให้ลูกค้าคำนวณการตอบสนองต่อความท้าทายแบบสุ่ม ไคลเอนต์ต้องคำนวณการตอบสนองโดยใช้คุณลักษณะของแพคเกจแอพที่ติดตั้งซึ่งยากต่อการปลอมและรวมถึงกลไกต่อต้านการงัดแงะที่ซับซ้อน

มันคืนโทเค็นซึ่งคุณสามารถส่งเป็นหลักฐานการตรวจสอบความถูกต้องไปยัง API ของคุณ

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

มีการวิเคราะห์ค่าใช้จ่าย / ผลประโยชน์ที่นักพัฒนา API จะต้องตัดสินใจว่ามีแนวโน้มว่าจะมีคนพยายามแฮ็ค API ของตนอย่างไรและอาจมีค่าใช้จ่ายเท่าใด การตรวจสอบความลับอย่างง่ายในแอปพลิเคชั่นจะป้องกันการโจมตีเล็กน้อย แต่เพื่อป้องกันตัวคุณเองจากผู้โจมตีที่มุ่งมั่นมากขึ้นนั้นอาจซับซ้อนและมีค่าใช้จ่ายสูง


0

SSL จะรักษาความปลอดภัยช่องทางการสื่อสาร

การเข้าสู่ระบบที่สำเร็จจะออกโทเค็นการรับรองความถูกต้องผ่านการเชื่อมต่อที่เข้ารหัส

โทเค็นการตรวจสอบความถูกต้องจะถูกส่งไปยัง REST API ของคุณในคำขอที่ตามมาทั้งหมด


1
ฉันได้เพิ่มข้อมูลเพิ่มเติม ฉันกำลังวางแผนที่จะทำการรับรองความถูกต้องเหมือนที่คุณพูดถึงด้วยโทเค็นการเข้าถึง REST API ไม่ต้องการให้ผู้ใช้ลงชื่อเข้าใช้เฉพาะการกระทำที่ระบุ ในทั้งสองกรณีลูกค้าจะต้องลงชื่อ / เชื่อถือได้
Supercell

ฉันไม่รู้อะไรมากเกี่ยวกับการพัฒนาอุปกรณ์พกพา แต่แอปพลิเคชันมือถือของคุณสามารถให้หมายเลขโทรศัพท์มือถือกับ REST API ได้หรือไม่? เมื่อฉันติดตั้งแอพในโทรศัพท์ Android ฉันมักจะถูกขอให้มอบสิทธิ์บางอย่างให้กับแอพ หากคุณสามารถส่งหมายเลขโทรศัพท์มือถือที่มีทุกคำขอผ่านการเชื่อมต่อที่ปลอดภัยคุณสามารถปฏิเสธคำขอทั้งหมดด้วยหมายเลขโทรศัพท์ที่ไม่รู้จัก แค่คิดออกมาดัง ๆ ที่นี่ ...
CodeART

ที่สามารถใช้งานได้ แต่มันจะต้องให้ผู้ใช้เข้าสู่ระบบและจำนวนที่ถูกผูกไว้กับบัญชีผู้ใช้ มิฉะนั้นเซิร์ฟเวอร์จะไม่มีสิ่งใดที่จะยืนยันหมายเลข
Supercell

คุณจะติดตั้งแอปพลิเคชันมือถือของคุณอย่างไร?
CodeART

พวกเขาจะวางจำหน่ายผ่านร้านค้าแอพ (Google, Apple, Microsoft)
Supercell

0

มันจะไม่ปลอดภัยเกินไป แต่คุณสามารถเพิ่มรหัสลับบางประเภทหรือแม้แต่ลายเซ็นของบุคคล ข้อเสีย: มันจะต้องรวมอยู่ในแอพซึ่งทำให้ง่ายต่อการรับมันถ้าคุณรู้ว่าคุณทำอะไร


0

เท่าที่ฉันทราบ HTTPS เป็นเพียงการตรวจสอบความถูกต้องของเซิร์ฟเวอร์ที่คุณสื่อสารด้วย

ในความเป็นจริงคุณสามารถใช้ SSL เพื่อตรวจสอบทั้งลูกค้าและเซิร์ฟเวอร์ หรือระบุไว้แตกต่างกัน "ใช่คุณสามารถใช้ใบรับรองไคลเอ็นต์"

คุณจะต้อง ...

  • ดูที่ห้องสมุด SSL ที่คุณใช้เพื่อกำหนดวิธีระบุใบรับรองไคลเอ็นต์ในอุปกรณ์มือถือ
  • เขียนรหัสหรือกำหนดค่าเซิร์ฟเวอร์ HTTPS ของคุณเพื่อให้ยอมรับการเชื่อมต่อจากไคลเอนต์ที่เชื่อถือได้และลงทะเบียนเท่านั้น
  • เกิดขึ้นกับกลไกในการเพิ่มใบรับรองไคลเอ็นต์ที่เชื่อถือได้ในเซิร์ฟเวอร์ของคุณ
  • เกิดขึ้นพร้อมกับกลไกในการลบใบรับรองไคลเอ็นต์ที่ไม่น่าเชื่อถืออีกต่อไปออกจากเซิร์ฟเวอร์ของคุณ

คุณสามารถให้แอปพลิเคชันมือถือจัดเก็บใบรับรองได้ทุกที่ที่คุณต้องการ เนื่องจากคุณต้องการให้มีการตรวจสอบเฉพาะแอปพลิเคชันคุณควรพิจารณาจัดเก็บใบรับรองในตำแหน่งดิสก์ที่ได้รับการป้องกัน (บน Android คุณสามารถสร้างตาราง "config" ในฐานข้อมูล SQLite ของคุณและแถวสำหรับใบรับรองของคุณและอีกใบรับรองสำหรับไพรเวตคีย์ของคุณ) .

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