ใน Android 6 ขึ้นไป ผู้ให้บริการ Wi-Fi และเครื่องวิเคราะห์แพ็กเก็ตถูกจำกัดไม่ให้เรียกข้อมูลที่อยู่ MAC จากโรงงานของอุปกรณ์ผ่านสแต็ก Wi-Fi จากคำขอเครือข่าย เริ่มตั้งแต่ Android 10 เป็นต้นไป จะมีข้อจำกัดเพิ่มเติมที่จำกัดการเข้าถึงตัวระบุอุปกรณ์ (ID) ให้กับแอปที่มี ระดับสิทธิ์ พิเศษ สิ่งนี้จะปกป้องรหัสอุปกรณ์เช่น
- หมายเลข IMEI, MEID, ESN และ IMSI ของโทรศัพท์
- บิลด์, ซิม หรือหมายเลขซีเรียล USB
ใครสามารถเข้าถึงรหัสอุปกรณ์ได้
รหัสอุปกรณ์ถูกจำกัดไว้ในอุปกรณ์ Android 10 ทั้งหมด แม้ว่าแอปจะกำหนดเป้าหมายเป็น Android 9 หรือต่ำกว่าก็ตาม รหัสอุปกรณ์สามารถเข้าถึงได้โดย
- แอป SMS เริ่มต้น
- แอปที่มีทั้งสิทธิ์
READ_PRIVILEGED_PHONE_STATE
ในคลาสManifest.permission
และอยู่ในรายการที่อนุญาตในไฟล์privapp-permission.xml
ต้องโหลดสิ่งเหล่านี้ในไดเร็กทอรีpriv-app
ด้วย - แอปที่มีสิทธิ์ของผู้ให้บริการตามที่กำหนดไว้ใน UICC Carrier Privileges
- เจ้าของอุปกรณ์หรือเจ้าของโปรไฟล์ที่ได้รับอนุญาต
READ_PHONE_STATE
ที่ได้รับในคลาสManifest.permission
(ไม่จำเป็นต้องแสดงรายการที่อนุญาต)
การเข้าถึงแพ็คเกจสิทธิพิเศษ
แพ็คเกจจะต้องมีสิทธิ์ในการเข้าถึงรหัสอุปกรณ์ ต้องมีสิทธิ์ READ_PRIVILEGED_PHONE_STATE
ในคลาส Manifest.permission
และอยู่ในรายการที่อนุญาตในไฟล์ privapp-permission.xml
สำหรับข้อมูลเกี่ยวกับกระบวนการรายการที่อนุญาต โปรดดู รายการอนุญาตสิทธิ์พิเศษ
สำหรับข้อมูลเกี่ยวกับการรับ ID เฉพาะสำหรับแพ็คเกจ ที่ไม่มีสิทธิพิเศษ โปรดดู กรณีการใช้งานทั่วไปและตัวระบุที่เหมาะสมที่จะใช้
รหัสอุปกรณ์ที่ถูกจำกัดและที่อยู่ MAC แบบสุ่ม
หากต้องการจำกัด ID อุปกรณ์เพิ่มเติม อุปกรณ์ทั้งหมดบน Android 10 จะส่งที่อยู่ MAC แบบสุ่มตามค่าเริ่มต้นสำหรับทั้งโพรบและคำขอที่เกี่ยวข้อง และต้องมีที่อยู่ MAC แบบสุ่มที่แตกต่างกันสำหรับ SSID แต่ละรายการ อย่าใช้ที่อยู่ MAC จากโรงงานของอุปกรณ์ในโหมดไคลเอนต์ จุดเชื่อมต่อแบบอ่อน (AP) หรือกรณีการใช้งาน Wi-Fi Direct จะต้องซ่อนไว้จาก API ที่เข้าถึงได้แบบสาธารณะซึ่งไม่ใช่แอปที่ได้รับสิทธิ์ แอปที่ได้รับสิทธิ์ซึ่งต้องส่งคืนที่อยู่ MAC จากโรงงานจะต้องได้รับอนุญาต LOCAL_MAC_ADDRESS
ผู้ใช้มีตัวเลือกในการเก็บที่อยู่ MAC แบบสุ่มเริ่มต้น ที่กำหนดให้กับ SSID แต่ละรายการ ตัวเลือกนี้สามารถดูได้ภายใต้ ความเป็นส่วนตัว ใน การตั้งค่า > รายละเอียดเครือข่าย หากต้องการเรียนรู้เกี่ยวกับการรับที่อยู่ MAC แบบสุ่ม โปรดดู ที่ อยู่ MAC แบบสุ่ม
แอพที่เรียกใช้ Device ID API
แอปที่เรียกใช้ API รหัสอุปกรณ์ต้องเป็นไปตามข้อกำหนดของ Android 10 มิฉะนั้น เมื่อพวกเขาพยายามเข้าถึง ID อุปกรณ์ จะมีการส่งคืนสิ่งต่อไปนี้:
- แอปที่กำหนดเป้าหมายเป็น Android 10
-
SecurityException
ถูกส่งออกมาจาก API ของรหัสอุปกรณ์ - แอปที่กำหนดเป้าหมายเป็น Android 9 หรือเก่ากว่า
- หากพวกเขามีสิทธิ์
READ_PHONE_STATE
จะส่งคืนการตอบกลับnull
หรือข้อมูลตัวยึดตำแหน่ง - หากไม่เป็นเช่นนั้น API ของรหัสอุปกรณ์จะส่ง
SecurityException
ที่มีชื่อของวิธีการที่เรียกว่า และเป็นการบ่งชี้ว่าแอปที่เรียกไม่ตรงตามข้อกำหนดในการเข้าถึง ID ที่ร้องขอ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับรหัสอุปกรณ์ที่ไม่เปลี่ยนรูปแบบ โปรดดู ตัวระบุอุปกรณ์ที่ไม่สามารถรีเซ็ตได้ และ แนวทางปฏิบัติที่ดีที่สุดสำหรับตัวระบุที่ไม่ซ้ำกัน
การทดสอบ
ต้อง ป้องกันไม่ให้แอปเข้าถึงหมายเลขซีเรียลของอุปกรณ์ และ IMEI / MEID, หมายเลขซีเรียลของ SIM และรหัสสมาชิก หากมี แอปที่ได้รับอนุญาตให้เข้าถึง ID เหล่านี้จะต้องเป็นไปตามเกณฑ์ข้อใดข้อหนึ่งที่ระบุไว้ในส่วน ผู้ที่สามารถเข้าถึง ID อุปกรณ์ได้