การขอ Permission เยอะๆบนแอนดรอยด์นั้นมันอันตรายจริงๆหรือ? [Case Study จากกระทู้แนะนำ]



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

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


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

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

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

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



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



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



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

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

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




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



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

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



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

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




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

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

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




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

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

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


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

    ถ้าเมื่อก่อนจะอยู่ในรูปของ 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 นั้นๆอยู่ดี เพราะงั้นแอพฯตัวอย่างโง่ๆตัวนี้ก็อาจจะดูเป็นจอมมารขึ้นมาก็เป็นได้ เพียงแค่คุณคิดไปเอง อมยิ้ม16

แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่