ספריה חדשה ומלהיבה של טביעת אצבע דיגיטלית

ספריה חדשה שמקלה מאוד על השימוש בזיהוי משתמשים ללא עוגיות.
מצב פרטיות בכרום

בקרוב אנו עומדים בסופו של עידן – עוגיות צד שלישי עומדות למות גם בכרום וכרגע אין רושם למנגנון שיחליף אותן. זאת אומרת שהיכולת של חברות לעקוב אחרינו פוחתת והולכת – זה אומר שמפרסמים ואתרים לגיטימיים יצטרכו למצוא חלופות (אחת מהן, FLoC – נבחנת ומעוררת מחלוקת עזה). אבל חברות קצת יותר אפלוליות או כאלו שיש להן צורך לגיטימי לעקוב אחר המשתמשים יצטרכו למצוא דרכים אחרות.

את טביעת האצבע הדיגיטלית כבר סיקרתי לפני שנים ועבדתי עליה לא מעט. מדובר בטכניקה הכוללת איסוף של המון פרמטרים מהדפדפן/מערכת ההפעלה באמצעות ג'אווהסקריפט. למי שלא יודע – הדפדפן שלנו שופך עלינו המון מידע באמצעות API של ג'אווהסקריפט. אפשר לראות פה באתר של EFF – לחצו על Test your browser כדי לראות כמה פרמטרים הדפדפן מסגיר עליכם – אחד מהם למשל הוא מיפוי וריאנטים שונים ב-Canvas שמשתנים לפי סוג הדפדפן, המעבד, המעבד הגרפי וסבתא שלי (טוב, לא סבתא שלי, אבל הבנתם את הרעיון).

אם אוספים את כל הפרמטרים האלו, אפשר לבנות טביעת אצבע די ייחודית. כמה ייחודית? באתר של ה-EFF התבשרתי שהדפדפן הגנרי שלי הוא ייחודי מבין כ-300,000 דפדפנים שנכנסו אליהם ב-45 היום האחרונים. יפי קא יאי.

כדי להוסיף על השמחה והששון לפני כמה חודשים יצא מוצר חדש בקוד פתוח שמפשט מאוד את המעקב. המוצר בקוד הפתוח הוא ספרית ג'אווהסקריפט מאוד פשוטה לשימוש שהפלט שלה הוא מזהה ייחודי, או יותר נכון כמעט ייחודי למשתמש. הספריה נמצאת פה. היא מורכבת ממוצר חינמי שבנוי בג'אווהסקריפט בלבד וממוצר בתשלום שהוא יותר מחוכם וגם משתמש בגילוי IP ובנתונים נוספים.

מבחינה פשוטה שעשיתי, לספריה יש תוצאות מרשימות במיוחד. אתם גם יכולים לבדוק את הדמו:

השימוש בספריה הוא ממש פשוט, יש דוגמה ב-README איך עובדים איתו, אפילו בונילה.

<script>
  function initFingerprintJS() {
    // Initialize an agent at application startup.
    const fpPromise = FingerprintJS.load();

    // Get the visitor identifier when you need it.
    fpPromise
      .then(fp => fp.get())
      .then(result => {
        // This is the visitor identifier:
        const visitorId = result.visitorId;
        console.log(visitorId);
      });
  }
</script>
<script
  async
  src="//cdn.jsdelivr.net/npm/@fingerprintjs/fingerprintjs@3/dist/fp.min.js"
  onload="initFingerprintJS()"
></script>

כאשר התוצאה המתקבלת היא hash שהוא ה-id של המשתמש. את ה-hash הזה אתם יכולים לשמור במסד הנתונים של האתר ואז לבצע בדיקה אם המשתמש כבר ביקר באתר או לקשור אותו לזהות קיימת של משתמש. בדקתי את הספריה הזו עם פיירפוקס ועם כרום, עם VPN ובאינקוגניטו, הוא הצליח למצוא את המשתמש כל הזמן. את Tor הוא לא הצליח לשבור.

יש גם גרסה בתשלום, שהיא בעצם שירות SAAS – ההטמעה שלה היא בצד השרת ומדובר בשליחת נתוני המשתמש אל השרתים של השירות וניתוח פרמטרים נוספים. יש גם דמו מרשים לגמרי. גם הוא לא שובר את Tor.

האם זה חוקי?

אין שום בעיה בניטור משתמשים לצרכי אבטחת מידע (למשל למנוע רישום כפול לשירות או ניצול כפול של מבצעים) – אבל ברגע שאתם מצמידים מידע מזהה ומשתמשים במידע הזה למעקב – יש סיכוי שאתם עוברים על תקנות GDPR. בישראל אין חוק, אבל עם ה-GDPR לא הייתי מתעסק.

מה אני יכול לעשות כמשתמש?

משתמשים שחוששים מטביעת אצבעות דיגיטלית יכולים להתקין תוסף שמערבל את הנתונים של הדפדפן. ממה שראיתי בפיירפוקס הוא הצליח לשבור גם את המוצר בתשלום. מצד שני – 99 אחוז מהמשתמשים לא ישתמשו בתוסף הזה וזה כמובן פתח למעקב (שעלול להיות בעייתי) אבל גם לסחיטה ואיומים – תחשבו למשל על אתרי פורנו שמפעילים את טביעת האצבע ואז מנסים למצוא אותה בקרב אתרים לגיטימיים. כיף לא רגיל בגדול.

לסיכום – מדובר בטכניקה שחיה, בועטת וקיימת ומשתמשים בה. בעבר כבר איתרתי תוסף נגישות שהשתמש בספריה מיושנת לבצע מעקב אחר משתמשים בישראל. והשירות המסחרי הזה – כנראה שיש לו לקוחות. בכל מקרה, אם יש שימוש לגיטימי עבורכם – כדאי להכיר את השירות. ואם אתם פעילי פרטיות – על אחת כמה וכמה.

פוסטים נוספים שכדאי לקרוא

תמונה מצוירת של רובוט שמנקה HTML
יסודות בתכנות

סניטציה – למה זה חשוב

הסבר על טכניקה פשוטה וידועה מאד שאנו מפעילים על מידע לפני שאנחנו מציגים אותו ב-HTML באפליקציה או באתר.

פתרונות ומאמרים על פיתוח אינטרנט

המנעו מהעלאת source control לשרת פומבי

לא תאמינו כמה אתרים מעלים את ה-source control שלהם לשרת. ככה תמצאו אותם וגם הסבר למה זה רעיון רע.

גלילה לראש העמוד