protobuf ביישומי גוגל?
-
מי שפעם חפר בכל מיני שירותי גוגל, לראות איך הם שולחים נתונים, ראה שזה לא ג'ייסון רגיל.
הנתונים נשלחים בJS בכל מיני מערכים מוזרים עם הרבה NULL ומספרים מוזרים.למשל המערכים הבאים במפות גוגל:
בתוכם מסתתרים הנתונים של המקום המוצג.
או זה, מגוגל קיפס:
לכאורה זה נראה דרך להחביא את הנתונים כדי שלא יגנבו אותם.
אחרת, מה העניין לשלוח NULL לשרת?
לומר כלום?
ולפעמים, כמו למעלה, זה המון NULL-ים...אבל קראתי, שיש לגוגל פורמט משלהם להעברת נתונים בשם protobuf, וייתכן שזהו הפורמט בו הם משתמשים להעברת הנתונים ללקוח.
כלומר, את המבנה של הנתונים, הם מחזיקים בפורמט הזה.אם זה פורמט בינארי, ייתכן שהNULL הזה מסמל משהו בינארי.
מישהו יודע לאשר / לסתור את ההשערה הזאת?
או לפחות לתת איזה הגיון בקודים של שירותי גוגל?
את ההשערה הזו, הבאתי מפה:
https://medium.com/@marin_m/how-i-found-a-5-000-google-maps-xss-by-fiddling-with-protobuf-963ee0d9caffמציאה:
אולי המבנה מסתתר פה?
https://github.com/googleapis/googleapis -
-
@musicode
למעשה יכול להיות שיש להם struct או מערך שמקבל את כל הערכים מהJSON
ולא תמיד יש ערכים לכל המפתחות
אפשרות א. לא לשלוח כלום ולהשאיר את המפתח ריק (או לא ליצור אותו)
אפשרות ב. לשלוח NULL ואז לשמור אותו במערך
נראה לי שפשוט יותר קל לדבג באפשרות ב.
(אגב בGO אם אתה לא מגדיר אפשרות שיתכן והמפתח יהיה חסר
הוא לא יפרסר את הJSON)