ב-Android 6 ואילך, ספקי שירותי Wi-Fi ומנתחי מנות הוגבלו מלשחזר את כתובת ה-MAC של היצרן של מכשיר דרך ערימת ה-Wi-Fi מבקשות רשת. החל מ-Android 10, מגבלות נוספות מגבילות את הגישה למזהי מכשירים (מזהים) לאפליקציות בעלות רמת ההרשאה המוסמכת . זה מגן על מזהי מכשיר כגון
- טלפוניה מספרי IMEI, MEID, ESN ו-IMSI.
- מספרים סידוריים של build, SIM או USB.
מי יכול לגשת למזהי מכשיר
מזהי מכשיר מוגבלים בכל מכשירי Android 10, גם אם אפליקציות ממוקדות ל-Android 9 ומטה. ניתן לגשת למזהי מכשיר על ידי
- אפליקציית ברירת המחדל ל-SMS.
- אפליקציות עם הרשאת
READ_PRIVILEGED_PHONE_STATE
במחלקהManifest.permission
, וגם עם רישום היתרים בקובץprivapp-permission.xml
. אלה חייבים להיטען גם בספרייתpriv-app
. - אפליקציות עם הרשאות ספק כמוגדר ב- UICC הרשאות ספק .
- בעל מכשיר או בעל פרופיל עם הרשאת
READ_PHONE_STATE
שהוענקה במחלקהManifest.permission
. (אין צורך ברישום הרשאות.)
גישה לחבילות מועדפות
חבילה חייבת לקבל הרשאה כדי לגשת למזהי מכשיר. הוא חייב להיות בעל הרשאת READ_PRIVILEGED_PHONE_STATE
במחלקה Manifest.permission
, ולהיות רשום ברשימה של privapp-permission.xml
. למידע על תהליך רשימת ההיתרים, ראה רישום הרשאות מורשות .
למידע על קבלת מזהה ייחודי עבור חבילה לא מוגנת , עיין במקרי שימוש נפוצים והמזהה המתאים לשימוש .
מזהי מכשירים מוגבלים וכתובות MAC אקראיות
כדי להגביל עוד יותר מזהי מכשיר, כל המכשירים ב-Android 10 משדרים כברירת מחדל כתובות MAC אקראיות הן עבור בקשות בדיקה והן עבור בקשות הקשורות, וחייבים להיות בעלי כתובת MAC אקראית שונה עבור כל SSID. אל תשתמש בכתובת ה-MAC של היצרן של המכשיר במצב לקוח, נקודת גישה רכה (AP) או מקרי שימוש ב-Wi-Fi Direct. זה חייב להישאר מוסתר מממשקי API נגישים לציבור שאינם אפליקציות מורשות. אפליקציות מורשות הדורשות החזרת כתובת ה-MAC של היצרן נדרשות לקבל הרשאת LOCAL_MAC_ADDRESS
.
למשתמשים יש אפשרות לשמור את כתובת ה-MAC האקראית המוגדרת כברירת מחדל שהוקצתה לכל SSID. האפשרות ניתנת לצפייה תחת פרטיות בהגדרות > פרטי רשת . כדי ללמוד על השגת כתובת MAC אקראית ראה כתובות MAC אקראית .
אפליקציות המפעילות ממשקי API של מזהה מכשיר
אפליקציות המפעילות ממשקי API של מזהה מכשיר חייבות לעמוד בדרישות Android 10. אחרת, כאשר הם מנסים לגשת למזהי מכשיר, יוחזרו הדברים הבאים:
- אפליקציות ממוקדות לאנדרואיד 10
-
SecurityException
נזרק מממשקי ה-API של מזהה המכשיר. - אפליקציות ממוקדות ל-Android 9 או גרסה קודמת יותר
- אם יש להם הרשאת
READ_PHONE_STATE
, מוחזרים תגובתnull
או נתוני מיקום. - אם הם לא עושים זאת, ממשקי ה-API של מזהה המכשיר זורקים
SecurityException
שמכיל את שם השיטה שנקראה, וציון שהאפליקציה המתקשרת לא עומדת בדרישות לגישה למזהה המבוקש.
למידע נוסף על מזהי מכשירים בלתי ניתנים לשינוי, ראה מזהי מכשירים שאינם ניתנים לאיפוס ושיטות עבודה מומלצות למזהים ייחודיים .
בדיקה
יש למנוע מאפליקציות גישה למספר הסידורי של המכשיר, ובמקרה רלוונטי, ל-IMEI/MEID, למספר הסידורי של ה-SIM ולזיהוי המנוי. אפליקציות בעלות הרשאת גישה למזהים אלה חייבות גם לעמוד באחד מהקריטריונים המפורטים תחת מי יכול לגשת למזהי מכשירים .