How to prevent the insecure data storage – Keyboard Caching

บทนำ (Overview)

บทความนี้กล่าวถึงแนวทางวิธีการแก้ไขสำหรับการป้องกันการไม่ให้จดจำข้อมูลสำคัญใน Input text box นอกเหนือไปจากการทำ Virtual Keyboard เป็นต้น

ขั้นตอน (Steps)

ป้องกันไม่อนุญาตเก็บข้อมูล Keyboard ที่เราพิมพ์ลงไปใน Cache เพราะฉะนั้นสามารถป้องกันเครื่องที่ผ่านการ Jailbreak ได้

  1. ในการเขียนโปรแกรม (Objective-c) เราสามารถเรียกใช้งาน Property ของ Input Text Box ที่เรียกว่า secureTextEntry แล้วตั้งค่าเป็น YES ดังตัวอย่างต่อไปนี้
    -(void)viewDidLod {
       _txtRepassword.secureTextEntry = YES;
    }
    
  2. ผลที่ได้รับคือ Input Text Box จะมีการ Masked ค่าต่าง ๆ เอาไว้ ซึ่งอาจจะเหมาะสมเฉพาะข้อมูลที่ Sensitive มาก ๆ เช่น Password PIN หรือ CVV
  3. และเมื่อทดสอบจะพบว่าข้อความดังกล่าวจะไม่ถูก Cache เอาไว้ ในclass=”bash /var/mobile/Library/Keyboard

ป้องกันไม่ให้ข้อมูลที่ Cache นั้นแสดงผลออกมาสำหรับแนะนำคำแก้ไขที่ถูกต้อง (Auto correction) วิธีนี้ช่วยป้องกัน Field ที่สำคัญแต่ไม่ต้องการ Masked เป็นต้น อย่างไรก็ตามความเสี่ยงยังคงอยู่จนกระทั้งเครื่องถูก Jailbreak

  1. ในการเขียนโปรแกรม (Objective-c) เราสามารถเรียกใช้งาน Property ของ Input Text Box ที่เรียกว่า autocorrectionType ดังตัวอย่างต่อไปนี้
    -(void)viewDidLod {
       _txtReUsername.autocorrectionType = UITextAutocorrectionTypeNo;
    }
    
  2. จากตัวอย่างช่อง E-mail ไม่ได้ปิด Autocorrection แต่ช่อง Username ปิด Autocorrection ไว้ ทดลองกรอกข้อมูล Email ดังนี้
  3. จากรูปข้างต้นจะพบว่าอักขระพิเศษจะไม่ถูกจดจำไว้ใน Keyboard Cache
  4. เราทดลองกรอกข้อความใน username ให้ใกล้เคียงคำที่เรากรอกเอาไว้จะไม่ปรากฏ pop-up ของ Autocorrection
  5. ที่นี้ทางกลับกันทดลองกรอกข้อมูลในช่อง Username และลองไปพิมพ์คำใกล้เคียงที่ช่อง Email จะปรากฏข้อมูลที่ได้จดจำไว้ก่อน ซึ่งก็ใกล้เคียงกับ Autocomplete นั้นเอง

ข้อมูลที่เป็นตัวเลข

  1. จากการทดสอบข้อมูลที่เป็นตัวเลขพบว่าไม่มีการจำข้อมูลใน Cache ดังนี้

 

ใส่ความเห็น