רמת קושי 1

כיצד להגן על האתר שלכם מקוד זדוני או קוד לא מוכר שמישהו שם ב Google Tag Manager

אז איך באמת מונעים ממשתמשים לשים קוד מסוכן ב GTM ומשאירים להם רק תגיות פשוטות להטמעה? GTM מאפשר באופן פשוט למדי לעשות זאת ולשמור על החשבון שלכם.

אסף טרפיקנט | 01 פברואר, 2017
הורדת ספר

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

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

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

האם אפשר לחסום קוד מצורת custom html או כל תגית מסוג אחר?

התשובה היא כן. ואכן גוגל מאפשרים לכם ליצור רשימה שחורה (Blacklist) של כל התגיות שאתם לא רוצים להריץ, או רשימה לבנה (White list) שרק מי שנמצא שם יכול לרוץ.

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

אבל רגע, מה זאת אומרת "לחסום"? זה אומר שאני אכנס ל GTM ופשוט לא תהיה לי האופציה לייצר תג מסוג מסויים? האפשרות פשוט תעלם מהמסך?

לא ממש. ואני אסביר:

איך זה מתבצע

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

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

<script>

dataLayer = [];

</script>

אז לצערי צריך לחזור למפתח עכשיו, ולבקש ממנו להוסיף שורה מיוחדת בתוך ה Datalayer. התפקיד של השורה הזו הוא לבדוק את התגיות שרצות ואם הם ב Balcklist – לחסום אותם. ואם הם ב Whitelist – אז לאשר אותם. אם שמתם תגית מסויימת או סוג תגיות מסויים בשתי הרשימות, התגית לא תרוץ (Blacklist חזק יותר).

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

אזהרות מסע:

  1. כאן תמצאו רשימה של כל התגיות והכלים המובנים בתוך GTM עם שם הקוד שלהם שיעזור לכם להגדיר את הכללים באופן תקין.
  2. לכל סוג תגית יש ID שמזהה אותה באופן אישי כדי שתוכלו לחסום (או לאשר) רק אותם באופן ספציפי, למשל, cegg מייצג את כל התגיות המוכנות של CrazyEgg (מערכת ליצירת מפות חום).
  3. לכל סוג תגית יש גם "משפחה" שהיא שייכת אליה, כך שאתם יכולים באופן גורף למנוע או להתיר רק לסוג מסויים של תגיות לרוץ. למשפחה קוראים Class ובלינק שנתתי מקודם תראו את שם ה Class לכל תגית. קחו בחשבון שאם חסמתם קלאס מסוג מסויים, זה חוסם את כל סוגי התגים תחת אותו הקלאס. אז תעברו בעיון על הלינק ותוודאו שאתם לא עושים שטויות.
  4. לבדוק לבדוק לבדוק!!

קדימה, דוגמאות

הנה חסימה של Custom html (יחסום גם Custom javascript variables וכל מה שנחשב "קוד חופשי" במערכת):

<script>
dataLayer = [{
'gtm.blacklist' : ['customPixels']
}];
</script>

והנה חסימה של כמעט הכל למעט פיקסלים וקודים השייכים לגוגל (אדוורדס, אנליטיקס, Doubleclick  וחבריהם יעברו). אגב, אם תשימו את זה בטעות ב Blacklist במקום  Whitelist, זה יחסום כמעט של פיצ'ר של GTM כמו האזנה להקלקות, משתנים של JS ועוד.

<script>

dataLayer = [{

'gtm.whitelist' : ['google']

}];

</script>

הבנתם את העקרון? אני אחזור על זה. מחפשים בקישור שנתתי את סוג התג שרוצים לחסום, ומזהים את השם שלו או את המשפחה שהוא שייך אליה (Class).. מוסיפים את ה ID או את ה Class של התגית ל White או ל Blacklist בתוך ה Datalayer – וזהו.

אבל יש בעיה..

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

בהצלחה למאבטחים!

בשורה התחתונה

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

תגובות

Please Post Your Comments & Reviews

האימייל לא יוצג באתר. שדות החובה מסומנים *

אסף טרפיקנט
רוצה לקרוא אחר כך?

אז איך באמת מונעים ממשתמשים לשים קוד מסוכן ב GTM ומשאירים להם רק תגיות פשוטות להטמעה? GTM מאפשר באופן פשוט למדי לעשות זאת ולשמור על החשבון שלכם.

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

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

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

האם אפשר לחסום קוד מצורת custom html או כל תגית מסוג אחר?

התשובה היא כן. ואכן גוגל מאפשרים לכם ליצור רשימה שחורה (Blacklist) של כל התגיות שאתם לא רוצים להריץ, או רשימה לבנה (White list) שרק מי שנמצא שם יכול לרוץ.

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

אבל רגע, מה זאת אומרת "לחסום"? זה אומר שאני אכנס ל GTM ופשוט לא תהיה לי האופציה לייצר תג מסוג מסויים? האפשרות פשוט תעלם מהמסך?

לא ממש. ואני אסביר:

איך זה מתבצע

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

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

<script>

dataLayer = [];

</script>

אז לצערי צריך לחזור למפתח עכשיו, ולבקש ממנו להוסיף שורה מיוחדת בתוך ה Datalayer. התפקיד של השורה הזו הוא לבדוק את התגיות שרצות ואם הם ב Balcklist – לחסום אותם. ואם הם ב Whitelist – אז לאשר אותם. אם שמתם תגית מסויימת או סוג תגיות מסויים בשתי הרשימות, התגית לא תרוץ (Blacklist חזק יותר).

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

אזהרות מסע:

  1. כאן תמצאו רשימה של כל התגיות והכלים המובנים בתוך GTM עם שם הקוד שלהם שיעזור לכם להגדיר את הכללים באופן תקין.
  2. לכל סוג תגית יש ID שמזהה אותה באופן אישי כדי שתוכלו לחסום (או לאשר) רק אותם באופן ספציפי, למשל, cegg מייצג את כל התגיות המוכנות של CrazyEgg (מערכת ליצירת מפות חום).
  3. לכל סוג תגית יש גם "משפחה" שהיא שייכת אליה, כך שאתם יכולים באופן גורף למנוע או להתיר רק לסוג מסויים של תגיות לרוץ. למשפחה קוראים Class ובלינק שנתתי מקודם תראו את שם ה Class לכל תגית. קחו בחשבון שאם חסמתם קלאס מסוג מסויים, זה חוסם את כל סוגי התגים תחת אותו הקלאס. אז תעברו בעיון על הלינק ותוודאו שאתם לא עושים שטויות.
  4. לבדוק לבדוק לבדוק!!

קדימה, דוגמאות

הנה חסימה של Custom html (יחסום גם Custom javascript variables וכל מה שנחשב "קוד חופשי" במערכת):

<script>
dataLayer = [{
'gtm.blacklist' : ['customPixels']
}];
</script>

והנה חסימה של כמעט הכל למעט פיקסלים וקודים השייכים לגוגל (אדוורדס, אנליטיקס, Doubleclick  וחבריהם יעברו). אגב, אם תשימו את זה בטעות ב Blacklist במקום  Whitelist, זה יחסום כמעט של פיצ'ר של GTM כמו האזנה להקלקות, משתנים של JS ועוד.

<script>

dataLayer = [{

'gtm.whitelist' : ['google']

}];

</script>

הבנתם את העקרון? אני אחזור על זה. מחפשים בקישור שנתתי את סוג התג שרוצים לחסום, ומזהים את השם שלו או את המשפחה שהוא שייך אליה (Class).. מוסיפים את ה ID או את ה Class של התגית ל White או ל Blacklist בתוך ה Datalayer – וזהו.

אבל יש בעיה..

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

בהצלחה למאבטחים!

תגובות

Please Post Your Comments & Reviews

האימייל לא יוצג באתר. שדות החובה מסומנים *