ความเป็นส่วนตัวของ iOS: ประกาศ InAppBrowser.com – ดูว่าคำสั่ง JavaScript ใดที่ถูกฉีดผ่านเบราว์เซอร์ในแอป

สัปดาห์ที่แล้วฉันเผยแพร่รายงาน เกี่ยวกับความเสี่ยงของแอปบนอุปกรณ์เคลื่อนที่โดยใช้เบราว์เซอร์ในแอป แอพบางตัว เช่น Instagram และ Facebook แทรกโค้ด JavaScript ลงในเว็บไซต์บุคคลที่สาม ซึ่งทำให้ผู้ใช้เสี่ยงต่อความปลอดภัยและความเป็นส่วนตัว

ฉันมีความสุขมากที่ได้เห็นบทความที่นำเสนอโดยสื่อหลักทั่วโลก เช่น TheGuardian และ The Register ซึ่งสร้าง ความประทับใจให้กับ Twitter กว่าล้านครั้ง และได้รับการจัดอันดับ #1 ใน HackerNews มานานกว่า 12 ชั่วโมง หลังจากอ่านคำตอบและ DM แล้ว ฉันเห็นคำถามทั่วไปในชุมชน:

iPhone ที่แสดงเว็บไซต์ inappbrowser.com แสดงผลภายใน TikTok แสดงให้เห็นว่ามีการเพิ่มโค้ด CSS อย่างไร เพิ่มการตรวจสอบสำหรับการแตะทั้งหมดและอินพุตคีย์บอร์ดทั้งหมด ตลอดจนรับพิกัดขององค์ประกอบที่ผู้ใช้แตะ

In-App Browser ของ TikTok ที่ฉีดโค้ดเพื่อสังเกตการแตะและอินพุตคีย์บอร์ดทั้งหมด ซึ่งอาจรวมถึงรหัสผ่านและบัตรเครดิต

“ฉันจะตรวจสอบได้อย่างไรว่าแอพใดบ้างที่ทำในมุมมองเว็บของพวกเขา”

ขอแนะนำ InAppBrowser.com ซึ่งเป็นเครื่องมือง่ายๆ ในการแสดงรายการคำสั่ง JavaScript ที่ดำเนินการโดยแอป iOS ที่แสดงหน้าเว็บ

หากต้องการลองใช้เครื่องมือนี้ด้วยตนเอง:

  1. เปิดแอพที่คุณต้องการวิเคราะห์
  2. แชร์ URL https://InAppBrowser.com ที่ใดที่หนึ่งในแอป (เช่น ส่ง DM ให้เพื่อน หรือโพสต์ไปที่ฟีดของคุณ)
  3. แตะที่ลิงค์ภายในแอพเพื่อเปิด
  4. อ่านรายงานบนหน้าจอ
iPhone ที่แสดงเว็บไซต์ inappbrowser.com แสดงผลภายใน TikTok แสดงให้เห็นว่ามีการเพิ่มโค้ด CSS อย่างไร เพิ่มการตรวจสอบสำหรับการแตะทั้งหมดและอินพุตคีย์บอร์ดทั้งหมด ตลอดจนรับพิกัดขององค์ประกอบที่ผู้ใช้แตะ

In-App Browser ของ TikTok ที่ฉีดโค้ดเพื่อสังเกตการแตะและอินพุตคีย์บอร์ดทั้งหมด ซึ่งอาจรวมถึงรหัสผ่านและบัตรเครดิต

ฉันเริ่มใช้เครื่องมือนี้เพื่อวิเคราะห์แอป iOS ยอดนิยมที่มีเบราว์เซอร์ในแอปของตัวเอง ด้านล่างนี้คือผลลัพธ์ที่ฉันพบ

สำหรับการวิเคราะห์นี้ ฉันได้ยกเว้นเบราว์เซอร์ iOS ของบุคคลที่สามทั้งหมด (Chrome, Brave เป็นต้น) เนื่องจากพวกเขาใช้ JavaScript เพื่อนำเสนอฟังก์ชันการทำงานบางอย่าง เช่น ตัวจัดการรหัสผ่าน Apple กำหนดให้แอปเบราว์เซอร์ iOS ของบุคคลที่สามทั้งหมดใช้กลไกการแสดงผล Safari WebKit

หมายเหตุสำคัญ: เครื่องมือนี้ตรวจไม่พบคำสั่ง JavaScript ทั้งหมดที่ดำเนินการ และไม่แสดงการติดตามใดๆ ที่แอปอาจทำโดยใช้โค้ดเนทีฟ (เช่น ตัวจดจำท่าทางสัมผัสที่กำหนดเอง) รายละเอียดเพิ่มเติมด้านล่างนี้

โอเพ่นซอร์สอย่างเต็มที่

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

แอพ iOS ที่มี In-App Browser

  • ตัวเลือกในการเปิดในเบราว์เซอร์เริ่มต้น : แอปมีปุ่มสำหรับเปิดลิงก์ที่แสดงอยู่ในเบราว์เซอร์เริ่มต้นหรือไม่
  • แก้ไขหน้า : แอปแทรกโค้ด JavaScript ลงในเว็บไซต์บุคคลที่สามเพื่อแก้ไขเนื้อหาหรือไม่ ซึ่งรวมถึงการเพิ่มโค้ดติดตาม (เช่น อินพุต การเลือกข้อความ การแตะ ฯลฯ) การแทรกไฟล์ JavaScript ภายนอก ตลอดจนการสร้างองค์ประกอบ HTML ใหม่
  • ดึงข้อมูลเมตา : แอปเรียกใช้โค้ด JavaScript เพื่อดึงข้อมูลเมตาของเว็บไซต์หรือไม่ การดำเนินการนี้ไม่เป็นอันตรายและไม่ก่อให้เกิดความเสี่ยงด้านความปลอดภัยหรือความเป็นส่วนตัวอย่างแท้จริง
  • JS : ลิงก์ไปยังโค้ด JavaScript ที่ฉันสามารถตรวจพบได้ ข้อจำกัดความรับผิดชอบ: อาจมีการเรียกใช้โค้ดอื่น รหัสอาจไม่ใช่การแสดงคำสั่ง JS ทั้งหมดที่ถูกต้อง 100%
แอป ตัวเลือกในการเปิดในเบราว์เซอร์เริ่มต้น แก้ไขหน้า ดึงข้อมูลเมตา JS อัปเดต
ติ๊กต๊อก ⛔️ ใช่ ใช่ .js 2022-08-18
อินสตาแกรม ใช่ ใช่ .js 2022-08-18
FB Messenger ใช่ ใช่ .js 2022-08-18
Facebook ใช่ ใช่ .js 2022-08-18
อเมซอน ไม่มี ใช่ .js 2022-08-18
สแน็ปแชท ไม่มี ไม่มี 2022-08-18
โรบินฮูด ไม่มี ไม่มี 2022-08-18

คลิกที่ Yes หรือ None ในตารางด้านบนเพื่อดูภาพหน้าจอของแอป

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

แม้ว่าบางแอปด้านบนจะมีเครื่องหมายถูกสีเขียว แต่ก็อาจใช้ JavaScript แบบแยก WKContentWorld ใหม่ ซึ่งฉันจะอธิบายด้านล่าง

TikTok ตรวจสอบอินพุตและแตะแป้นพิมพ์ทั้งหมด

tiktok_cut.png

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

  • TikTok iOS สมัครรับการกดแป้นพิมพ์ทุกครั้ง (การป้อนข้อความ) ที่เกิดขึ้นบนเว็บไซต์ของบุคคลที่สามที่แสดงผลภายในแอป TikTok ซึ่งอาจรวมถึงรหัสผ่าน ข้อมูลบัตรเครดิต และข้อมูลผู้ใช้ที่มีความละเอียดอ่อนอื่นๆ (การ keypress และ keydown ลง) เราไม่สามารถทราบได้ว่า TikTok ใช้การสมัครรับข้อมูลเพื่ออะไร แต่จากมุมมองทางเทคนิค นี่เทียบเท่ากับการติดตั้ง keylogger บนเว็บไซต์ของบุคคลที่สาม
  • TikTok iOS สมัครรับทุกครั้งที่แตะบนปุ่ม ลิงก์ รูปภาพ หรือส่วนประกอบอื่นๆ บนเว็บไซต์ที่แสดงในแอป TikTok
  • TikTok iOS ใช้ฟังก์ชัน JavaScript เพื่อดูรายละเอียดเกี่ยวกับองค์ประกอบที่ผู้ใช้คลิก เช่น รูปภาพ ( document.elementFromPoint )

นี่ คือรายการคำสั่ง JavaScript ทั้งหมดที่ฉันสามารถตรวจพบได้

Instagram ทำมากกว่าแค่การแทรก pcm.js

instagram_cut.png

โพสต์ของสัปดาห์ที่แล้ว พูดถึงวิธีที่ Meta ฉีดสคริปต์ pcm.js ลงในเว็บไซต์บุคคลที่สาม Meta อ้างว่า พวกเขาเพียงฉีดสคริปต์เพื่อให้เป็นไปตามตัวเลือก ATT ของผู้ใช้ และ “ความปลอดภัยและคุณลักษณะผู้ใช้เพิ่มเติม” เพิ่มเติม

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

ทางทวิตนี้

หลังจากปรับปรุงการตรวจจับ JavaScript ตอนนี้ฉันพบคำสั่งเพิ่มเติมบางคำสั่งที่ Instagram ดำเนินการ:

  • Instagram iOS สมัครรับข้อมูลทุกครั้งที่แตะบนปุ่ม ลิงก์ รูปภาพ หรือส่วนประกอบอื่นๆ บนเว็บไซต์ภายนอกที่แสดงผลภายในแอพ Instagram
  • Instagram iOS สมัครรับข้อมูลทุกครั้งที่ผู้ใช้เลือกองค์ประกอบ UI (เช่น ช่องข้อความ) บนเว็บไซต์ของบุคคลที่สามที่แสดงผลภายในแอพ Instagram

นี่ คือรายการคำสั่ง JavaScript ทั้งหมดที่ฉันสามารถตรวจพบได้

หมายเหตุเกี่ยวกับการสมัครรับข้อมูล : เมื่อฉันพูดถึง ” App Subscribes to ” ฉันหมายความว่าแอปสมัครรับข้อมูลจากเหตุการณ์ JavaScript ประเภทนั้น (เช่น การแตะทั้งหมด) ไม่มีทางตรวจสอบว่าเกิดอะไรขึ้นกับข้อมูล

แอพสามารถซ่อนกิจกรรม JavaScript จากเครื่องมือนี้

ตั้งแต่ iOS 14.3 (ธันวาคม 2020) Apple ได้แนะนำการรองรับการรันโค้ด JavaScript ใน บริบทของเฟรมที่ระบุและโลกของเนื้อหา คำสั่ง JavaScript ที่ดำเนินการโดยใช้วิธีนี้ยังคงสามารถเข้าถึงเว็บไซต์บุคคลที่สามได้อย่างสมบูรณ์ แต่เว็บไซต์ไม่สามารถตรวจพบได้ (ในกรณีนี้คือเครื่องมือเช่น InAppBrowser.com)

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

Apple WKContentWorld Docs

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

ดังนั้นเมื่อ Meta หรือ TikTok ต้องการซ่อนคำสั่ง JavaScript ที่พวกเขาดำเนินการบนเว็บไซต์บุคคลที่สาม สิ่งที่พวกเขาต้องทำคืออัปเดต JavaScript runner:

 // Currently used code by Meta & TikTok self . evaluateJavaScript ( javascript ) // Updated to use the new system self . evaluateJavaScript ( javascript , in : nil , in : . defaultClient , completionHandler : { _ in })

ตัวอย่างเช่น Firefox สำหรับ iOS ใช้ระบบ WKContentWorld ใหม่ อยู่แล้ว เนื่องจากลักษณะโอเพนซอร์สของ Firefox และ Google Chrome สำหรับ iOS จึงเป็นเรื่องง่ายสำหรับเราในฐานะชุมชนที่จะตรวจสอบว่าไม่มีอะไรน่าสงสัยเกิดขึ้น

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

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

กรณีใช้งานที่ถูกต้องสำหรับการดูเว็บในแอป

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

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

แอพ iOS ที่ใช้ Safari

แอพด้านล่างทำตามคำแนะนำของ Apple ในการใช้ Safari หรือ SFSafariViewController สำหรับการดูเว็บไซต์ภายนอก บริบทเพิ่มเติมเกี่ยวกับ SFSafariViewController ใน บทความต้นฉบับ

แอพทั้งหมดที่ใช้ SFSafariViewController หรือ Default Browser นั้นปลอดภัย และไม่มีทางที่แอพจะฉีดโค้ดใดๆ ลงบนเว็บไซต์ แม้แต่กับระบบ WKContentWorld ใหม่

แอป เทคโนโลยี อัปเดต
ทวิตเตอร์ SFafariViewController 2022-08-15
Reddit SFafariViewController 2022-08-15
WhatsApp เบราว์เซอร์เริ่มต้น 2022-08-15
หย่อน เบราว์เซอร์เริ่มต้น 2022-08-16
Google Maps SFafariViewController 2022-08-15
YouTube เบราว์เซอร์เริ่มต้น 2022-08-15
Gmail เบราว์เซอร์เริ่มต้น 2022-08-15
โทรเลข SFafariViewController 2022-08-15
สัญญาณ SFafariViewController 2022-08-15
ทวีตบอท SFafariViewController 2022-08-15
Spotify เบราว์เซอร์เริ่มต้น 2022-08-15
เวนโม่ SFafariViewController 2022-08-15
Microsoft Teams เบราว์เซอร์เริ่มต้น 2022-08-16
Microsoft Outlook เบราว์เซอร์เริ่มต้นหรือ Edge 2022-08-16
Microsoft OneNote เบราว์เซอร์เริ่มต้น 2022-08-16
ชัก เบราว์เซอร์เริ่มต้น 2022-08-16

พวกเราทำอะไรได้บ้าง?

ในฐานะผู้ใช้แอป

ลิงก์ไปยังวิดีโอ YouTube ที่แสดงการทำงานของเว็บไซต์ภายในแอพ Instagram

วิดีโอสาธิตวิธีหลบหนีจากเบราว์เซอร์ในแอพของ Instagram

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

TikTok ไม่มีปุ่มสำหรับเปิดเว็บไซต์ในเบราว์เซอร์เริ่มต้น

บริษัทที่ใช้เบราว์เซอร์ในแอป

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

บริษัทเทคโนโลยีรายใหญ่

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

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

ด้วยเทคโนโลยีล่าสุด บริษัทต่างๆ สามารถเริ่มมอบประสบการณ์ที่ราบรื่นให้กับผู้ใช้ โดยเคารพในความเป็นส่วนตัวของพวกเขา เป็นไปได้ที่นักพัฒนา iOS หรือ Android จะย้ายมาตรฐานความเป็นส่วนตัวและความรับผิดชอบไปยัง Apple และ Google (เช่น การตรวจสอบแอปที่เข้มงวดมากขึ้น หน้าจอการอนุญาตที่มากขึ้น เป็นต้น) อย่างไรก็ตาม นี่เป็นการสนทนาที่ใหญ่กว่ามาก ซึ่งบริษัทต่างๆ จำเป็นต้องทำงานร่วมกันเพื่อกำหนดว่ามาตรฐานใดควร มีอยู่. เราไม่สามารถมีบริษัทหนึ่งหรือสองบริษัทกำหนดทิศทางสำหรับอุตสาหกรรมทั้งหมดได้ เนื่องจากโซลูชันจำเป็นต้องใช้ได้กับบริษัทส่วนใหญ่ส่วนใหญ่ มิฉะนั้น เราจะอยู่ในโลกที่บริษัทต่างๆ ถูกบังคับให้ต้องใช้ความคิดสร้างสรรค์ในการหาวิธีติดตามข้อมูลผู้ใช้เพิ่มเติมจากแหล่งใด ๆ ที่เป็นไปได้ หรือกำหนดมาตรฐานของตนเองว่าสิ่งใดดีที่สุดสำหรับความเป็นส่วนตัวของผู้ใช้ ซึ่งจะส่งผลเสียต่อผู้บริโภคและประสบการณ์ผลิตภัณฑ์ในท้ายที่สุด ”

เฮมาล ชาห์

โดเมน App-Bound ที่ชาญฉลาดด้านเทคโนโลยีดูเหมือนจะเป็นคุณสมบัติ WebKit ใหม่ที่ยอดเยี่ยม ทำให้นักพัฒนาสามารถนำเสนอประสบการณ์การท่องเว็บในแอปที่ปลอดภัยยิ่งขึ้นเมื่อใช้ WKWebView ในฐานะนักพัฒนาแอป คุณสามารถกำหนดโดเมนที่แอปของคุณสามารถเข้าถึงได้ (ของคุณเอง) และคุณจะไม่สามารถควบคุมเพจของบุคคลที่สามได้อีก หากต้องการปิดการป้องกัน ผู้ใช้จะต้องปิดการใช้งานอย่างชัดแจ้งในแอปการตั้งค่า iOS อย่างไรก็ตาม ในขณะที่เขียน ระบบนี้ยังไม่ได้เปิดใช้งานโดยค่าเริ่มต้น

คำถามที่พบบ่อยสำหรับผู้อ่านที่ไม่ใช่เทคโนโลยี

  • เบราว์เซอร์ในแอปสามารถอ่านทุกสิ่งที่ฉันทำทางออนไลน์ได้หรือไม่ ไม่! พวกเขาสามารถอ่านและดูกิจกรรมออนไลน์ของคุณได้เมื่อคุณเปิดลิงก์หรือโฆษณาจากภายในแอปของพวกเขาเท่านั้น
  • แอปด้านบนขโมยรหัสผ่าน ที่อยู่ และหมายเลขบัตรเครดิตของฉันจริงหรือ ไม่! ฉันต้องการแสดงให้เห็นว่าผู้ไม่หวังดีสามารถเข้าถึงข้อมูลนี้ได้ด้วยวิธีนี้ ดังที่แสดงไว้ในอดีต หากบริษัทสามารถเข้าใช้ข้อมูลได้อย่างถูกกฎหมายและฟรี พวกเขาจะติดตาม ข้อมูลโดยไม่ขออนุญาตจากผู้ใช้
  • ฉันจะป้องกันตัวเองได้อย่างไร? เมื่อใดก็ตามที่คุณเปิดลิงก์จากแอปใดๆ ให้ดูว่าแอปมีวิธีเปิดเว็บไซต์ที่แสดงอยู่ในเบราว์เซอร์เริ่มต้นของคุณหรือไม่ ในระหว่างการวิเคราะห์นี้ ทุกแอปนอกเหนือจาก TikTok เสนอวิธีการทำเช่นนี้
  • บริษัท ต่างๆ ทำเช่นนี้โดยตั้งใจหรือไม่? การสร้างเบราว์เซอร์ในแอพของคุณเองนั้นใช้เวลาเล็กน้อยในการเขียนโปรแกรมและบำรุงรักษา มากกว่าแค่การใช้ความเป็นส่วนตัวและทางเลือกที่เป็นมิตรต่อผู้ใช้ ซึ่งสร้างมาใน iPhone แล้วในช่วง 7 ปีที่ผ่านมา เป็นไปได้มากว่าบริษัทจะมีแรงจูงใจในการติดตามกิจกรรมของคุณบนเว็บไซต์เหล่านั้น
  • ฉันเปิด InAppBrowser.com ภายในแอพ และมันไม่แสดงคำสั่งใดๆ ฉันปลอดภัยไหม ไม่! ก่อนอื่น เว็บไซต์ตรวจสอบเพียงหนึ่งในหลายร้อยเวกเตอร์การโจมตี: การฉีด JavaScript จากตัวแอปเอง และแม้กระทั่งสำหรับสิ่งเหล่านั้น ณ เดือนธันวาคม 2020 นักพัฒนาแอปสามารถซ่อนคำสั่ง JavaScript ที่พวกเขาดำเนินการได้อย่างสมบูรณ์ ดังนั้นจึงไม่มีทางที่เราจะตรวจสอบสิ่งที่เกิดขึ้นจริงภายใต้ประทุน

ความเป็นส่วนตัวของ iOS: Instagram และ Facebook สามารถติดตามสิ่งที่คุณทำบนเว็บไซต์ใดก็ได้ในเบราว์เซอร์ในแอพของพวกเขา

instagram_framed.png

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

หมายเหตุ: เพื่อให้โพสต์นี้เรียบง่าย ฉันจะใช้ “Instagram” แทน “Meta” หรือ “Facebook”

อินสตาแกรมทำอะไร?

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

ทำไมถึงเป็นเรื่องใหญ่?

Instagram ตั้งใจทำงานเกี่ยวกับระบบอนุญาต App Tracking Transparency ซึ่งออกแบบมาเพื่อป้องกันการรวบรวมข้อมูลประเภทนี้ หลังจากเปิดตัว Meta ประกาศว่า:

การแจ้งเตือน iPhone อย่างง่ายของ Apple นั้น ทำให้ Facebook มีมูลค่าถึง 10,000 ล้านเหรียญสหรัฐต่อปี

Facebook บ่นว่า App Tracking Transparency ของ Apple นั้นเอื้อต่อบริษัทอย่าง Google เพราะ App Tracking Transparency “แยกเบราว์เซอร์ออกจากการติดตามที่ Apple ต้องการสำหรับแอพ”

เว็บไซต์ที่คุณเข้าชมบน iOS จะไม่ทริกเกอร์ข้อความแจ้งการติดตาม เนื่องจากมีคุณลักษณะป้องกันการติดตามอยู่ในตัว

Daring Fireball & MacWorld

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

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

Facebook โจมตีผู้ใช้ด้วยข้อความขอร้องให้เปิดการติดตามอีกครั้ง มันขู่ว่าจะฟ้องร้องต่อต้านการผูกขาดกับ Apple มันมีธุรกิจขนาดเล็กเพื่อป้องกันการติดตามผู้ใช้ โดยอ้างว่าเมื่อบริษัทยักษ์ใหญ่สอดแนมผู้คนนับพันล้าน นั่นคือรูปแบบของการพัฒนาธุรกิจขนาดเล็ก

EFF – Facebook บอกว่า Apple นั้นทรงพลังเกินไป พวกเขาพูดถูก

คำถามที่พบบ่อยสำหรับผู้อ่านที่ไม่ใช่เทคโนโลยี

  • Instagram/Facebook สามารถอ่านทุกสิ่งที่ฉันทำทางออนไลน์ได้หรือไม่ ไม่! Instagram สามารถอ่านและดูกิจกรรมออนไลน์ของคุณได้เฉพาะเมื่อคุณเปิดลิงก์หรือโฆษณาจากภายในแอพของพวกเขา
  • Facebook ขโมยรหัสผ่าน ที่อยู่ และหมายเลขบัตรเครดิตของฉันจริงหรือ ไม่! ฉันไม่ได้พิสูจน์ว่าข้อมูลที่ Instagram กำลังติดตามอยู่นั้นถูกต้อง แต่ต้องการแสดงประเภทข้อมูลที่พวกเขา จะ ได้รับโดยที่คุณไม่รู้ตัว ดังที่แสดงไว้ในอดีต หากเป็นไปได้ที่บริษัทจะเข้าถึงข้อมูลได้ฟรี โดยไม่ต้องขออนุญาตจากผู้ใช้ พวกเขาจะติดตามข้อมูลนั้น
  • ฉันจะป้องกันตัวเองได้อย่างไร? สำหรับรายละเอียดทั้งหมด เลื่อนลงไปที่ส่วนท้ายของบทความ สรุป: เมื่อใดก็ตามที่คุณเปิดลิงก์จาก Instagram (หรือ Facebook หรือ Messenger) อย่าลืมคลิกที่จุดที่มุมเพื่อเปิดหน้าใน Safari แทน
  • Instagram ทำเช่นนี้โดยตั้งใจหรือไม่? ฉันไม่สามารถพูดได้ว่ามีการตัดสินใจภายในอย่างไร ทั้งหมดที่ฉันพูดได้ก็คือการสร้างเบราว์เซอร์ในแอพของคุณเองนั้นใช้เวลาเล็กน้อยในการเขียนโปรแกรมและบำรุงรักษา มากกว่าแค่การใช้ความเป็นส่วนตัวและทางเลือกที่เป็นมิตรต่อผู้ใช้ ซึ่งสร้างไว้แล้วใน iPhone ในช่วง 7 ปีที่ผ่านมา

Meta Pixel

ไฟล์ JavaScript ภายนอกที่แอพ Instagram แทรก ( connect.facebook.net/en_US/pcm.js ) คือ Meta Pixel รวมถึงโค้ดบางส่วนเพื่อสร้างบริดจ์เพื่อสื่อสารกับแอปโฮสต์ นี่ไม่ใช่แค่พิกเซล/รูปภาพ แต่โค้ด JavaScript จริงที่ได้รับการดำเนินการ:

Meta Pixel เป็นส่วนย่อยของโค้ด JavaScript ที่ ให้คุณติดตามกิจกรรมของผู้เยี่ยมชมบนเว็บไซต์ของคุณ มันทำงานโดยโหลดไลบรารี่ของฟังก์ชันขนาดเล็กที่คุณสามารถใช้ได้เมื่อใดก็ตามที่ผู้เยี่ยมชมไซต์ดำเนินการที่คุณต้องการติดตาม […]

Meta Pixel สามารถรวบรวมข้อมูลต่อไปนี้:

  • […]
  • ข้อมูลการคลิกปุ่ม – รวมปุ่มใดๆ ที่ผู้เยี่ยมชมเว็บไซต์คลิก ป้ายกำกับของปุ่มเหล่านั้น และหน้าใดๆ ที่เข้าชมเนื่องจากการคลิกปุ่ม
  • ชื่อช่องแบบฟอร์ม – รวมชื่อช่องเว็บไซต์ เช่น อีเมล ที่อยู่ ปริมาณ ฯลฯ สำหรับเมื่อคุณซื้อผลิตภัณฑ์หรือบริการ เราไม่เก็บค่าของฟิลด์เว้นแต่คุณจะรวมไว้เป็นส่วนหนึ่งของการจับคู่ขั้นสูงหรือค่าที่ไม่บังคับ

developer.facebook.com/docs/meta-pixel (มิถุนายน 2565)

"The Meta Pixel allows you to track visitor activity on your website" – นี่คือปัญหา: เป็นเรื่องปกติที่ผู้ให้บริการเว็บไซต์จะตัดสินใจติดตั้ง Meta pixel เพื่อติดตามกิจกรรมของผู้เยี่ยมชม อย่างไรก็ตาม ในกรณีนี้ ผู้ดำเนินการเว็บไซต์ ไม่ ยินยอมให้มีการติดตั้ง Meta Pixel ยิ่งไปกว่านั้น ผู้ให้บริการเว็บไซต์ยังไม่มีวิธีเลือกไม่รับด้วย ซ้ำ

ข้อจำกัดความรับผิดชอบ

ฉันไม่มีรายการข้อมูลที่ Instagram ส่งกลับบ้าน ฉันมีหลักฐานว่าแอพ Instagram และ Facebook ใช้งานคำสั่ง JavaScript เพื่อแทรก JS SDK เพิ่มเติมโดยไม่ได้รับความยินยอมจากผู้ใช้ รวมถึงการติดตามการเลือกข้อความของผู้ใช้ หาก Instagram ทำเช่นนี้แล้ว พวกเขายังสามารถใส่โค้ด JS อื่นๆ ได้อีกด้วย แอพ Instagram นั้นได้รับการปกป้องอย่างดีจากการโจมตีจากคนตรงกลาง และด้วยการแก้ไขไบนารี Android เพื่อลบการตรึงใบรับรองและเรียกใช้ในโปรแกรมจำลอง ฉันจึงสามารถตรวจสอบการเข้าชมเว็บบางส่วนได้

proxyman-android-details-3.png

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


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

เพื่อสรุปความเสี่ยงและข้อเสียของการมีเบราว์เซอร์ในแอป:

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

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

ทดสอบแอพ Meta ต่างๆ

Instagram iOS Messenger iOS
instagram_framed.png messenger_framed.png
Facebook iOS Instagram Android
facebook_framed.png android_framed.png

WhatsApp กำลังเปิด iOS Safari เป็นค่าเริ่มต้น ดังนั้นจึงไม่มีปัญหา

มันทำงานอย่างไร

ตามความรู้ของฉัน ไม่มีวิธีที่ดีในการตรวจสอบคำสั่ง JavaScript ทั้งหมดที่ดำเนินการโดยแอปโฮสต์ iOS ( ชอบที่จะได้ยินหากมีวิธีที่ดีกว่า )

ฉันสร้างไฟล์ HTML ธรรมดาขึ้นมาใหม่ โดยมีโค้ด JS บางส่วนมาแทนที่ document. บางส่วน วิธีการ:

 document . getElementById = function ( a , b ) { appendCommand ( ' document.getElementById(" ' + a + ' ") ' ) return originalGetElementById . apply ( this , arguments ); }

การเปิดไฟล์ HTML นั้นจากแอพ iOS Instagram ทำให้เกิดสิ่งต่อไปนี้:

instagram_framed_cut.png

เปรียบเทียบกับสิ่งที่เกิดขึ้นเมื่อใช้เบราว์เซอร์ปกติ หรือในกรณีนี้คือ Telegram ซึ่งใช้ SFSafariViewController ที่แนะนำ:

SFSafariViewController_framed_cut.png

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

รายละเอียดทางเทคนิค

flow-chart.png
  • Instagram เพิ่มตัวฟังเหตุการณ์ใหม่เพื่อรับรายละเอียดทุกครั้งที่ผู้ใช้เลือกข้อความบนเว็บไซต์ เมื่อใช้ร่วมกับการฟังภาพหน้าจอ จะทำให้ Instagram มีข้อมูลเชิงลึกอย่างละเอียดเกี่ยวกับการเลือกและแชร์ข้อมูลเฉพาะเจาะจง
  • แอพ Instagram จะตรวจสอบว่ามีองค์ประกอบที่มี ID iab-pcm-sdk ไม่: น่าแปลกที่ฉันพบข้อมูลออนไลน์นี้น้อยมาก โดยทั่วไป ดูเหมือนว่าจะเป็น SDK การติดตามข้ามแพลตฟอร์มที่ให้บริการโดย IAB Tech Lab แต่ฉันไม่รู้เกี่ยวกับความสัมพันธ์ระหว่าง Instagram และ IAB Tech Lab เพียงพอ (เช่น ทวีตนี้ )
  • หากไม่พบองค์ประกอบที่มี ID iab-pcm-sdk Instagram จะสร้างองค์ประกอบ script ใหม่ ตั้งค่าแหล่งที่มาเป็น https://connect.facebook.net/en_US/pcm.js ซึ่งเป็นซอร์สโค้ดสำหรับการติดตาม Meta พิกเซล
  • จากนั้นจะพบองค์ประกอบ script แรกในเว็บไซต์ของคุณเพื่อแทรก Meta Pixel ก่อน โดยจะ ฉีด Meta Pixel ลงในเว็บไซต์ของคุณ
  • Instagram ยังสอบถาม iframes บนเว็บไซต์ของคุณ แต่ฉันไม่พบสิ่งบ่งชี้ว่าพวกเขากำลังทำอะไรกับมัน

วิธีการป้องกันตัวเองในฐานะผู้ใช้?

instagram_open_in_safari_framed.png

หลีกหนีจาก in-app-webview

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

ใช้เวอร์ชันเว็บ

โซเชียลเน็ตเวิร์กส่วนใหญ่ รวมถึง Instagram และ Facebook นำเสนอเวอร์ชันเว็บบนมือถือที่เหมาะสม โดยนำเสนอชุดคุณลักษณะที่คล้ายคลึงกัน คุณสามารถใช้ https://instagram.com ได้โดยไม่มีปัญหาใน iOS Safari

วิธีการป้องกันตัวเองในฐานะผู้ให้บริการเว็บไซต์?

จนกว่า Instagram จะแก้ไขปัญหานี้ (ถ้ามี) คุณสามารถหลอกให้แอพ Instagram และ Facebook เชื่อว่าติดตั้งโค้ดติดตามแล้ว เพียงเพิ่มสิ่งต่อไปนี้ในโค้ด HTML ของคุณ:

 <span id="iab-pcm-sdk"></span> <span id="iab-autofill-sdk"></span>

นอกจากนี้ เพื่อป้องกันไม่ให้ Instagram ติดตามการเลือกข้อความของผู้ใช้บนเว็บไซต์ของคุณ:

 const originalEventListener = document . addEventListener document . addEventListener = function ( a , b ) { if ( b . toString (). indexOf ( " messageHandlers.fb_getSelection " ) > - 1 ) { return null ; } return originalEventListener . apply ( this , arguments ); }

สิ่งนี้จะไม่แก้ปัญหาที่แท้จริงของ Instagram ที่เรียกใช้โค้ด JavaScript กับเว็บไซต์ของคุณ แต่อย่างน้อยจะไม่มีการฉีดสคริปต์ JS เพิ่มเติม รวมถึงมีการติดตามข้อมูลน้อยลง

แอพจะตรวจจับได้ง่ายด้วยว่าเบราว์เซอร์ปัจจุบันคือแอพ Instagram/Facebook โดยการตรวจสอบตัวแทนผู้ใช้ แต่ฉันไม่พบวิธีที่ดีในการเปิดเบราว์เซอร์ในแอพโดยอัตโนมัติเพื่อเปิด Safari แทน หากคุณรู้วิธีแก้ไข ฉัน ชอบที่จะรู้

ข้อเสนอ

สำหรับแอปเปิ้ล

Apple กำลังทำงานที่ยอดเยี่ยมในการสร้างแพลตฟอร์มโดยคำนึงถึงความเป็นส่วนตัวของผู้ใช้ หนึ่งใน 4 หลักการความเป็นส่วนตัว:

ความโปร่งใสและการควบคุมของผู้ใช้: ตรวจสอบให้แน่ใจว่าผู้ใช้รู้ว่าข้อมูลใดถูกแบ่งปันและใช้งานอย่างไร และพวกเขาสามารถออกกำลังกายควบคุมข้อมูลได้

Apple Privacy PDF (เมษายน 2021)

ในขณะที่เขียน ไม่มีกฎการตรวจสอบ AppStore ที่ห้ามไม่ให้บริษัทสร้างเบราว์เซอร์ในแอปของตนเองเพื่อติดตามผู้ใช้ อ่านข้อมูลที่ป้อน และใส่โฆษณาเพิ่มเติมไปยังเว็บไซต์บุคคลที่สาม อย่างไรก็ตาม Apple แนะนำอย่างชัดเจนว่าให้ใช้ SFSafariViewController :

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

แนวทางปฏิบัติเกี่ยวกับส่วนต่อประสานกับมนุษย์ของ Apple (มิถุนายน 2565)

หากแอปของคุณอนุญาตให้ผู้ใช้ดูเว็บไซต์ได้จากทุกที่บนอินเทอร์เน็ต ให้ใช้คลาส SFSafariViewController หากแอปของคุณปรับแต่ง โต้ตอบ หรือควบคุมการแสดงเนื้อหาเว็บ ให้ใช้คลาส WKWebView

เอกสาร Apple SFSafariViewController (มิถุนายน 2565)

ขอแนะนำ App-Bound Domains

App-Bound Domains เป็นคุณสมบัติ WebKit ใหม่ที่ยอดเยี่ยม ทำให้นักพัฒนาสามารถนำเสนอประสบการณ์การท่องเว็บในแอพที่ปลอดภัยยิ่งขึ้นเมื่อใช้ WKWebView ในฐานะนักพัฒนาแอป คุณสามารถกำหนดโดเมนที่แอปของคุณสามารถเข้าถึงได้ และคำขอเว็บทั้งหมดจะถูกจำกัดไว้สำหรับโดเมนเหล่านั้น หากต้องการปิดการป้องกัน ผู้ใช้จะต้องปิดการใช้งานอย่างชัดแจ้งในแอปการตั้งค่า iOS

App-Bound Domains เริ่มใช้งานจริงกับ iOS 14 (ประมาณ 1.5 ปีที่แล้ว) อย่างไรก็ตาม เป็นเพียงตัวเลือกสำหรับนักพัฒนาเท่านั้น ซึ่งหมายความว่าแอป iOS ส่วนใหญ่ไม่ได้ใช้ประโยชน์จากคุณสมบัตินี้

หากผู้พัฒนา SocialApp ต้องการประสบการณ์ความเป็นส่วนตัวของผู้ใช้ที่ดีขึ้น พวกเขามีสองทางข้างหน้า:

  • ใช้ SafariViewController แทน WKWebView สำหรับการเรียกดูในแอป SafariViewController ปกป้องข้อมูลผู้ใช้จาก SocialApp โดยการโหลดหน้านอกพื้นที่กระบวนการของ SocialApp SocialApp สามารถรับประกันได้ว่าจะให้ประสบการณ์ความเป็นส่วนตัวที่ดีที่สุดแก่ผู้ใช้ในขณะที่ใช้ SafariViewController
  • เลือกใช้โดเมนที่ถูกผูกไว้กับแอป ข้อจำกัด WKWebView เพิ่มเติมจาก App-Bound Domains ทำให้มั่นใจได้ว่า SocialApp ไม่สามารถติดตามผู้ใช้โดยใช้ API ที่ระบุไว้ข้างต้น

ฉันเน้นส่วน "want a better user privacy experience" เนื่องจากเป็นส่วนที่ขาดหายไป: App-Bound Domains ควรเป็นข้อกำหนดสำหรับแอป iOS ทั้งหมด เนื่องจากแอปโซเชียลมีเดียเป็นแอปที่ฉีดโค้ดติดตาม

ในเดือนกรกฎาคม พ.ศ. 2565 Apple ได้เปิดตัว โหมด Lockdown เพื่อปกป้องผู้ที่มีความเสี่ยงสูงได้ดีขึ้น น่าเสียดายที่ iOS Lockdown Mode ไม่ได้เปลี่ยนวิธีการทำงานของการดูเว็บในแอป ฉันได้ยื่นเรดาร์กับ Apple: rdar://10735684 ซึ่ง Apple ได้ตอบกลับด้วยว่า “นี่ไม่ใช่สิ่งที่โหมด Lockdown มีไว้สำหรับ”

apple-response.png

ไม่กี่ขั้นตอนในทันทีเพื่อให้ Apple ดำเนินการ:

อัปเดตกฎการตรวจสอบแอปเพื่อกำหนดให้ใช้ SFSafariViewController หรือ โดเมนที่ผูกกับแอป เมื่อแสดงเว็บไซต์ของบุคคลที่สาม

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

ฉันได้ส่งเรดาห์ ( rdar://38109139 ) ถึง Apple ด้วย ซึ่งเป็นส่วนหนึ่งของ บล็อกโพสต์ที่ผ่านมา ของฉัน

สำหรับ Meta

ทำในสิ่งที่ Meta ทำกับ WhatsApp อยู่แล้ว: หยุดแก้ไขเว็บไซต์บุคคลที่สาม และใช้ Safari หรือ SFSafariViewController สำหรับเว็บไซต์บุคคลที่สามทั้งหมด สิ่งที่ดีที่สุดสำหรับผู้ใช้และเป็นสิ่งที่ควรทำ

ฉันได้เปิดเผยปัญหานี้กับ Meta ผ่าน Bug Bounty Program ซึ่งภายในไม่กี่ชั่วโมงพวกเขายืนยันว่าพวกเขาสามารถทำซ้ำ “ปัญหา” ได้ แต่ฉันไม่ได้รับการตอบกลับอะไรอีกเลยภายใน 9 สัปดาห์ที่ผ่านมา นอกจากขอให้ฉัน รออีกนานกว่าจะมีรายงานฉบับเต็ม เนื่องจากไม่มีการตอบกลับใดๆ สำหรับคำถามติดตามผลของฉัน และพวกเขาก็ไม่หยุดฉีดโค้ดติดตามลงในเว็บไซต์ภายนอก ฉันจึงตัดสินใจเผยแพร่ข้อมูลนี้สู่สาธารณะ (หลังจากให้เวลาล่วงหน้า 2 สัปดาห์กับพวกเขา)

ตรวจสอบ สิ่งพิมพ์ที่เกี่ยวข้องกับความเป็นส่วนตัวและความปลอดภัยอื่น ๆ ของฉัน

เปิดตัว auxcord.org – ให้เพื่อนๆ เข้าคิวเพลงในงานปาร์ตี้ของคุณ

auxcord-logo.png

  • คุณจัดงานปาร์ตี้
  • คุณเล่นเพลย์ลิสต์
  • เพื่อนปรารถนาเพลง
  • คุณให้โทรศัพท์กับพวกเขา
  • เพลย์ลิสต์ของคุณหยุด
  • พวกเขาเปลี่ยนระดับเสียง
  • เพลงจบ
  • เพลย์ลิสต์ของคุณหายไป
  • ปาร์ตี้ตาย

Auxcord.org เป็นบริการฟรีที่เรียบง่าย:

เพียงเชื่อมต่อบัญชี Sonos และ Spotify และจัดการปาร์ตี้ของคุณในที่เดียว:

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

ปัจจุบัน Auxcord ทำงานร่วมกับ Sonos & Spotify โปรเจ็กต์นี้ใช้งานได้ฟรี แต่ยังไม่มีโอเพ่นซอร์ส ฉันอาจเปิดแหล่งซื้อคืนบน GitHub ทั้งนี้ขึ้นอยู่กับความต้องการ

มันเหมือนกับตู้เพลง แต่สำหรับการตั้งค่า Sonos & Spotify ของคุณ

เปิด Auxcord.org ที่นี่เพื่อเริ่มใช้ในปาร์ตี้ครั้งต่อไปของคุณ