ในช่วงนี้หลายๆคนอาจจะเคยเห็นกระทู้พันทิปกระทู้หนึ่งถูกแชร์ในวงโซเชียล ที่เป็นเนื้อหาเกี่ยวกับอันตรายจาก Permission ในแอปพลิเคชัน Facebook Messenger ซึ่งบอกเล่าถึงการที่แอพฯตัวหนึ่งขอ Permission เยอะๆแล้วมันมีอันตรายใดๆบ้าง แต่เนื้อหาในนั้นก็ค่อนข้างเกินจริงมากจนทำให้เกิดความเชื่อผิดๆได้ และหลายๆคนก็คงยังแชร์กันต่อไปเรื่อยๆอยู่

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

กระทู้ที่พูดถึง เตือน! ผู้ใช้บริการ Facebook Messenger App มันน่ากลัวมากๆ

Permission มันคืออะไร?

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

ดังนั้นเค้าจึงมีสิ่งที่เรียกว่า Permission เพื่อเป็นข้อบังคับว่า แอพฯจะเข้าถึงบางอย่างที่ต้องขออนุญาตนั้นจะต้องประกาศ Permission ที่ต้องการไว้ในตอนเขียนแอพฯ ซึ่งอยู่ในไฟล์ที่เรียกว่า AndroidManifest.xml

ภาพตัวอย่างโค๊ดที่ประกาศ Permission เพื่อขอใช้งานอินเตอร์เนตกับอ่านข้อมูลสัญญาณมือถือ

เช่น แอพฯนั้นเป็นแอพฯถ่ายภาพ เพราะงั้น Permission ที่จะต้องขอก็คือ Camera (ชื่อเต็มๆของ Permission ตัวนี้คือ android.permission.CAMERA) ไม่เช่นนั้นแอพฯก็จะใช้กล้องไม่ได้

ซึ่ง Permission ที่ว่านี่ก็จะถูกนำไปแสดงให้เห็นในตอนที่ผู้ใช้จะติดตั้งแอพฯ ไม่ว่าจะโหลดจาก Google Play Store หรือติดตั้งจาก APK ก็ตาม เพื่อให้รู้ได้ว่าแอพฯตัวนั้นๆได้เมื่อใช้งานแล้วจะมีการขอเข้าถึงการทำงานส่วนใดบ้างที่ต้องขอ Permission

320x504 320x504

เวลาดาวน์โหลดและติดตั้งแอพฯลงเครื่อง User ที่รอบคอบก็มักจะเช็คดูก่อนว่าแอพฯตัวนั้นมี Permission ที่เหมาะสมหรือไม่ และเราหลายๆคนก็ถูกสอนมาแบบนี้

แต่ปัญหามันดันอยู่ที่ว่า Permission ที่มีในระบบนั้นไม่ได้เป็นแบบเจาะจง แต่เป็นการระบุโดยรวมแทน เช่น แอพฯที่จะขออ่านรายชื่อ Contact ในเครื่องเพื่อทำเป็นรายชื่อให้เลือกในแอพฯ แต่ทว่าการขอ Permission สำหรับ Contact นั้นกลับทำได้มากกว่านั้น เช่น แก้ไขข้อมูล เพิ่ม หรือลบรายชื่อของผู้ติดต่อได้ด้วย และ Permission ของ SMS นั้นก็คล้ายๆกัน

ขอเพื่อ 1 อย่าง แต่ดันทำได้หลายอย่าง

และเวลาดูคำอธิบายตอนที่ดาวน์โหลดติดตั้งแอพฯมันก็ดันบอกรายละเอียดทั้งหมดที่ Permission นั้นๆทำได้ ถ้าสังเกตดีๆไม่ว่าจะเป็นแอพฯตัวไหนถ้ามีการขอ Permission ที่เหมือนกันก็จะมีคำอธิบายใน Permission นั้นๆเหมือนกันเป๊ะ ทั้งๆที่แอพฯทั้งสองตัวนี้อาจจะใช้งานในส่วนของ Permission ที่ต่างกันก็ได้

320x504 320x504

จึงทำให้ User เกิดอาการระแวงหรือกระต่ายตื่นตูมขึ้นมาได้ไม่ยากว่า “เฮ้ย ทำไมแอพฯนี้ขออะไรเยอะจังวะ!!” ซึ่งในความเป็นจริงแอพฯส่วนใหญ่ประกาศขอไว้แต่ไม่ได้หมายถึงว่าจะต้องเรียกใช้งานตลอดทุกครั้ง

อย่างเช่น Facebook Messenger ที่จะมีขอ Permission เป็น Location Access หรือก็คือสามารถอ่านตำแหน่งของผู้ใช้ได้ แต่ก็ไม่ได้หมายความว่าผู้ใช้ทุกคนจะต้องถูกแอพฯตัวนี้อ่านตำแหน่งของผู้ใช้ได้ เพราะว่าเค้าก็จะมีปุ่มเปิดปิดการใช้งานในส่วนนี้อยู่แล้ว เพื่อไม่ให้ละเมิดความเป็นส่วนตัวถ้าผู้ใช้ไม่ยินยอม (แอพฯที่ดีควรทำแบบนี้)

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

ซึ่งถ้าว่ากันแบบซีเรียสจริงๆก็สามารถตรวจสอบด้วยระบบแอนดรอยด์ได้อยู่แล้วว่ามีแอพฯไหนใช้งานอยู่ในหน้า Settings > Location Access อยู่แล้ว ถ้าอยากจะปิดก็ปิดจากตรงนี้ก็ยังได้ เพราะเป็น Main Settings ซึ่งแอพฯอื่นๆไม่สามารถยุ่งได้อยู่แล้ว

แอพฯฟรีก็ต้องหวังผลอะไรบ้างสิ เพราะงั้นต้องแอบเอาข้อมูลส่วนตัวของผู้ใช้ไปขายแน่ๆเลย

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

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

ว่าแล้วก็โฆษณาเลยดีกว่า เป็นแอพฯเจ๋งๆจาก Startup ชื่อดังของคนไทยด้วยกันที่ชื่อว่า Fastinflow สามารถดาวน์โหลดกันได้ที่ Tikko – Google Play

หรืออย่างเช่นการที่เราเปิดมาเจอโฆษณาร้านค้าในย่านที่เราไปเที่ยวอยู่บ่อยๆ ทั้งๆที่ไม่เคยมีการใส่ข้อมูลหรือค้นหาในเครื่องเลย ก็มาจากการที่เปิด Location Access ไว้ แล้วแอพฯต่างๆก็จะเก็บประวัติไว้เพื่อใช้เป็นข้อมูลในการนำเสนอโฆษณา

ทำแบบนี้ผิดมั้ย? ไม่ผิดหรอก เพราะถ้าลองมองจุดประสงค์ให้ดีๆก็จะรู้ว่าเค้าต้องการจะแสดงโฆษณาที่เหมาะกับผู้ใช้ให้มากที่สุดเท่าที่ทำได้ ดังนั้นก็จะพยายามอิงข้อมูลที่มีอยู่เช่น Location หรือ Cookies จาก Web Browser ถ้าใครทำงานด้านนี้ก็น่าจะรู้ดีกว่าผม ว่าสามารถใช้ข้อมูลหลายๆอย่างมาช่วยในการแสดงโฆษณาให้ผู้ใช้ได้ โดยไม่ต้องถึงกับรู้ว่าคนนี้เป็นใครอยู่ที่ไหนทำอะไร

เพราะงั้นถ้ามองกลับมาเรื่อง Permission ว่าระหว่างแอพฯที่ดู Location เพื่อใช้ในการแสดงโฆษณา กับแอพฯที่ดู Location เพื่อตามตำแหน่งของผู้ใช้ จะเห็นว่าทั้งสองนี้จุดประสงค์ต่างกัน แต่มีสิ่งที่เหมือนกันคือต้องประกาศ Permission สำหรับ Location Access

ความเห็นส่วนตัวจากเรื่องเตือนภัย Facebook Messenger

เหมือนกระทู้ Viral ปั่นยอดคนอ่านซะมากกว่า เพราะแค่จั่วหัวกระทู้ก็ชวนคลิกแล้ว ถ้าเมื่อก่อนจะอยู่ในรูปของ Forward Mail นั่นเอง ทั้งๆที่เนื้อหาข้างในไม่มีหลักฐานยืนยันซักเท่าไร แล้วเอาข้อมูลจากที่อื่นๆมาแปะ โดยที่ไม่ได้หาเหตุผลหรือข้อพิสูจน์เลยว่าจริงหรือไม่ ยกตัวอย่างด้านมืดมาพูดเพื่อให้ดูน่ากลัวแล้วเกิดการแชร์ๆกันต่อไป ทั้งๆที่ไม่มีอะไรมายืนยัน

ตัวอย่างเช่น

App สามารถระบุตำแหน่งที่เราอยู่ได้อย่างชัดเจน เช่น ตอนนี้คุณอยู่ในห้องน้ำชั้น 3 ฝั่ง North ของ Siam Paragon

• ในความเป็นจริงมือถือไม่สามารถหาตำแหน่งผู่ใช้จากในอาคารได้แม่นขนาดนั้น เพราะการระบุตำแหน่งบนสมาร์ทโฟนจะมีหลักๆอยู่สองแบบคือ GPS Provider และ Network Provider โดยที่ GPS จะไม่สามารถเข้าถึงในอาคารได้เนื่องจากต้องรับสัญญาณจากดาวเทียม ดังนั้นห้างใหญ่ๆหลายๆชั้นนี่ไม่ต้องพูดถึงเลย และ Network จะเป็นการอิงตำแหน่งจากสัญญาณมือถือ ซึ่งมีดีแค่เร็วเท่านั้น แต่ไม่สามารถระบุได้แม่นยำเท่า GPS (คลาดเคลื่อนเป็นร้อยเมตร) และไม่สามารถระบุได้ว่าอยู่ชั้นไหนด้วย ถึงแม้บางเครื่องจะใช้ Barometer ช่วย เพื่อให้หาความสูงจากระดับน้ำทะเลได้ ก็ไม่ได้ระบุได้ง่ายขนาดนั้นว่าอยู่ชั้น 3 เพราะต้องรู้ว่าห้างอยู่สูงจากระดับน้ำทะเลเท่าไรด้วย

ถ้าใครไม่เข้าใจเรื่องนี้นะครับ “ให้ไปลองเล่น Ingress แล้วไปวิ่งตี Portal ในห้างดู” 😀

App สามารถถ่ายรูป ถ่ายวิดีโอ และอัดเสียง Audio จากมือถือเราได้ (อันนี้น่ากลัวมากๆ แม้เราไม่ได้เปิดใช้งานกล้องก็ตาม)

• อันนี้ก็เป็นแค่ฟีเจอร์ของตัวแอพฯเท่านั้นที่สามารถพูดแทนการพิมพ์ ส่งไฟล์ภาพหรือวีดีโอให้กัน ถ้าไม่ประกาศไว้ก็ใช้ไม่ได้น่ะสิ

ยกตัวอย่างจากแอพฯของผมเอง

ก็ขอเอาตัวอย่างของตัวเองมาพูดให้ฟังเล่นๆ จากภาพข้างล่างนี้คือแอพฯที่ผมเขียนไว้เองเอาไว้เก็บข้อมูลในเครื่อง (พวกสเปคและฟีเจอร์ในเครื่องนั้นๆ) จะเห็นว่ามีการขอ Permission อยู่ 4 หัวข้อด้วยกัน (จริงๆมีเยอะกว่าที่เห็น แต่ยกตัวอย่าง 5 ตัวพอ)

  • android.permission.READ_PHONE_STATE
  • android.permission.CAMERA
  • android.permission.ACCESS_COARSE_LOCATION
  • android.permission.ACCESS_FINE_LOCATION
  • android.permission.WRITE_EXTERNAL_STORAGE

ถ้ามองแบบแง่ร้ายสุดๆ

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

ในความเป็นจริง

  • เช็คว่าเครื่องนั้นๆรองรับการโทรศัพท์หรือไม่ (เพราะลงใน Tablet ได้)
  • เช็คว่ามีกล้องหน้าและกล้องหลังหรือไม่ ถ่ายภาพความละเอียดสูงสุดเท่าไรได้บ้าง, Focus Mode มีอะไรบ้าง, รองรับ LED Flash มั้ย ,บันทึกวีดีโอความละเอียดเท่าไรได้บ้าง และรองรับการถ่ายวีดีโอแบบ Timelapse มั้ย
  • เช็คว่าเครื่องมี GPS ในตัวหรือไม่
  • เช็คว่าเครื่องมี Internal Storage เท่าไร มี External Storage เท่าไร (ถ้ามี)

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

สรุป

สำหรับ Permission บนระบบแอนดรอยด์จะเรียกว่าเป็น “ดาบสองคม” ก็ว่าได้ เพราะแอพฯนั้นจะกลายเป็นแอพฯที่ดีและกลายเป็นแอพฯอันตรายได้เช่นกัน ทั้งๆที่ประกาศ Permission ที่เหมือนกันเป๊ะๆ แต่อยู่ที่ว่า Dev จะเขียนอะไรลงไปในนั้น

ขึ้นอยู่กับเจตนาของคนเขียนแอพฯ

ดังนั้นควรดูเป็น Case by case ไป เพราะไม่ใช่ทุกตัวที่เป็นแอพอันตราย และแอพทุกตัวก็ไม่ได้ปลอดภัยเสมอไปเช่นกัน ถ้าจะนำไปใช้ในทางที่ผิดก็ทำได้ไม่ยาก อย่างเช่นที่พี่เนยจาก nuuneoi.com ที่เคยทำตัวอย่างไว้ว่าการเขียนแอพฯเพื่อแอบดึงข้อมูลนั้นทำได้ไม่ยาก ซึ่งพี่แกก็ทำให้ดูจริงๆจนหลายๆคนรู้สึกว่าเป็นเรื่องที่น่ากลัวไปเลย ฮาๆ

Play video

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

ถ้าจะระวังเรื่องพวกนี้ ก็ควรจะระวังกับพวกแอพฯเถื่อนที่ Patched แล้ว Mod แล้วหรือแอพฯที่ดาวน์โหลดจาก Store หรือ Market จากที่อื่นที่ไม่น่าเชื่อถือดีกว่า เพราะพวกนั้นอันตรายกว่าเยอะ ผู้ใช้ไม่สามารถรู้ได้ว่าคนที่เอาไปแก้ไขได้แอบใส่อะไรไว้ในนั้นบ้าง อย่างล่าสุดที่กำลังนิยมกันก็คือ แอพ Line ที่ Mod ให้สามารถลงในเครื่องเดียวกันได้สองสามตัวพร้อมๆกัน เพื่อใช้หลายๆไอดี

จงระวัง แต่อย่าระแวง

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

ดังนั้นการรู้ในบางเรื่องก็จะช่วยให้เรากลายเป็นคนที่ระวังอย่างมีเหตุผล ไม่ใช่คนที่ไม่รู้เรื่องอะไรเลยจนระแวงไปหมด ซึ่งกระทู้พันทิปดังกล่าวก็ถือว่าเป็น Study Case ที่ดีสำหรับคนที่ชอบถามว่า “เรื่องบางเรื่องไม่เห็นจำเป็นต้องรู้” เพราะถ้าไม่รู้ในบางอย่างแล้วระแวงจนเกินไปก็จะทำให้ตัวเองกลายเป็นกระต่ายตื่นตูมออกมาเป็นแบบนี้ได้ (หรืออาจจะจงใจสร้างกระแสก็เป็นได้)

สำหรับบทความนี้คุณเลือกที่จะเชื่อหรือไม่ก็ได้ แต่ก็ขอให้เลือกอย่างมีเหตุผลนะครับ 😀