KEY CHAIN ใน iOS สำคัญไฉน

Piyawut Kamwiset
odds.team
Published in
2 min readJan 28, 2019

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

วันนี้เลยอยากจะมาพูดเรื่องการเก็บข้อมูลส่วนบุคคลของผู้ใช้บนมือถือระบบปฏิบัติการ iOS การที่เราจะเก็บข้อมูลของผู้ใช้ลงในมือถือมันสามารถใช้หลายวิธีได้ด้วยกันแต่วิธีการเหล่านั้นจะมีความปลอดภัยหรือไม่ก็ขึ้นอยู่กับนักพัฒนาเลือกที่จะเอาข้อมูลเหล่านั้นไปเก็บไว้ในส่วนที่มีความปลอดภัยหรือไม่

ข้อมูลสำคัญควรเก็บตรงไหน ?

หนึ่งในวิธีการเก็บข้อมูลส่วนบุคคลที่สำคัญในระบบปฏิบัติการ iOS นั่นก็คือการเก็บข้อมูลลงใน Keychain ซึ่งเป็นการเก็บข้อมูลที่มีความปลอดภัยได้ในระดับหนึ่ง

ซึ่งในบทความนี้จะไม่ขอลงรายละเอียดว่า Keychain มีหน้าที่การทำงานแบบไหน การเก็บข้อมูลของมันเอาไปเก็บที่ไหน แต่จะนำเสนอในส่วนของวิธีการนำไปใช้งาน ปัจจุบันมีนักพัฒนาหลายท่านได้ทำการพัฒนา library เพื่อให้เกิดความสะดวกสบายให้กับนักพัฒนาท่านอื่นๆ ซึ่งวันนี้ผมจะมาสอนวิธีการใช้ KeychainAccess

วิธีติดตั้ง

  • เปิด Terminal
  • ไปที่ Path ของโปรเจ็คที่สร้างไว้ ( cd Desktop/Keychain/ )
  • run คำสั่ง “pod init” จากนั้นจะได้ file เพิ่มขึ้นมา
  • run คำสั่ง “open Podfile”
  • เติมคำสั่ง pod ‘KeychainAccess’ ตามรูปด้านล่าง แล้ว Save
  • run “pod install”
คำสั่งทั้งหมดที่ต้องทำใน Terminal

เพียงเท่านี้เราก็จะสามารถใช้เจ้า KeychainAccess ได้แล้วเรามาเริ่ม Code กันดีกว่า

  • เปิดไฟลที่ต้องท้ายด้วย .xcworkspace
  • เมื่อเข้ามาแล้วด้านซ้ายไปที่ ViewController.swift
  • แล้วทำการ “import KeychainAccess” เราก็จะสามารถใช้งานมันได้แล้วใน class นี้

วิธีบันทึกข้อมูล

Keychain().set( #1, key: #2 )

จากตัวอย่าง Code ด้านบนสิ่งที่เราต้องใช้มี 2 อย่างคือ

  • #1 ค่าที่เราต้องการเก็บ (value)
  • #2 Key ที่เราเอาไว้ใช้อ้างอิงเพื่อเก็บ value นั้น

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

do {try Keychain().set("piyawut kamwiset", key: "firstName")} catch let error {print("error: \(error)")}

จากโค้ดข้างบนจะทำหน้าที่ในการบันทึก Value “piyawut kamwiset” และ Key คือ “firstName” และถ้าเกิด Code ตัวนี้ทำงานแล้วเกิดข้อผิดพลาดจะทำให้ไปตกใน catch ซึ่งขอไม่อธิบายเรื่อง try catch ในบทความนี้นะครับ ถ้าสนใจเรื่อง try catch สามารถอ่านได้จากลิ้งนี้ครับ

วิธีเอาข้อมูลออกมา ?

Keychain().get( #1 )
  • #1 คือ Key ที่เราต้องการ

และด้านล่างก็คือตัวอย่าง Code ตัวอย่าง

do {let firstName = Keychain().get("firstName")} catch let error {print("error: \(error)")}

Code ด้านบนนี้จะทำการเอาข้อมูลใน keychain ออกมา ซึ่ง key ที่ใช้อ้างอิงคือ firstName ถ้ารวมกับ code ส่วนแรก value ที่ออกมาก็คือ piyawut kamwiset นั้นเอง

และทั้งหมดนี้ก็คือการเก็บข้อมูลลงใน Keychain แบบเบื้องต้น ซึ่งถ้าผู้อ่านสนใจรายละเอียดการใช้ library แบบละเอียดสามารถอ่านได้จากลิ้งนี้เลยครับ KeychainAccess

ในบทความนี้ก็อยากจะให้เพื่อนๆนักพัฒนาหันมาสนใจเก็บข้อมูลของผู้ใช้ระบบให้มีความปลอดภัยกันมาเพื่อนขึ้นเพราะ

ข้อมูลเพียงเล็กน้อยของผู้ใช้ที่เราเก็บแบบไม่ปลอดภัย อาจจะกลับมาทำร้ายผู้ใช้ของเราอย่างที่เราคาดไม่ถึงก็ได้

สามารถดู Code ได้จาก url นี้ได้เลยครับ 😍

--

--