ב-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 אקראיות.

איור 1. כתובת ה-MAC מוצגת ככתובת אקראית בקטע 'פרטיות' שב'פרטי הרשת'.
אפליקציות שמפעילות ממשקי API של מזהי מכשירים
אפליקציות שמפעילות ממשקי API של מזהי מכשירים חייבות לעמוד בדרישות של Android 10. אחרת, כשהם מנסים לגשת למזהי המכשירים, מוחזר הערך הבא:
- אפליקציות שמטרגטות את Android 10
SecurityException
מושלכת מ-Device ID APIs.- אפליקציות שמטרגטות את Android מגרסה 9 ואילך
- אם יש להם את ההרשאה
READ_PHONE_STATE
, תוחזר תשובה מסוגnull
או נתוני placeholder. - אם לא, ממשקי ה-API של מזהי המכשיר יפיקו את השגיאה
SecurityException
שמכילה את שם השיטה שהתבצעה, וגם אינדיקציה לכך שהאפליקציה הקריאה לא עומדת בדרישות לגישה למזהה המבוקש.
מידע נוסף על מזהי מכשירים שלא ניתנים לשינוי זמין במאמרים מזהי מכשירים שלא ניתנים לאיפוס ושיטות מומלצות לשימוש במזהים ייחודיים.
בדיקה
חובה למנוע מאפליקציות לגשת למספר הסידורי של המכשיר, ובמקרים הרלוונטיים, למספר ה-IMEI או ה-MEID, למספר הסידורי של ה-SIM ולמזהה המנוי. אפליקציות עם הרשאה לגשת למזהים האלה צריכות גם לעמוד באחד מהקריטריונים שמפורטים בקטע מי יכול לגשת למזהי המכשיר.