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

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

כיצד פועל סקריפטים חוצי אתרים?

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

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

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

instagram viewer

כיצד למנוע סקריפטים בין אתרים ב-Node

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

חיטוי קלט

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

לדוגמה, אתה יכול להשתמש ב- מאמת כדי להימלט מתגי HTML בקלט משתמש כמו למטה.

יְבוּא מאמת מ "מאמת";
תן userInput = `ג'יין <script onload="עֵרָנִי('פריצת XSS');"></script>`;
תן sanitizedInput = validator.escape (UserInput);

אם היית מריץ את הקוד שלמעלה, הפלט המחטא יהיה זה.

ג'יין &lt; script onload=&quot; עֵרָנִי(&#x27;פריצת XSS&#x27;);&quot;&gt;&lt;&#x2F; תַסרִיט&gt;

הגבל קלט משתמש

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

יישום מדיניות קובצי Cookie של HTTP בלבד

קובצי Cookie מאחסנים נתונים במטמון מקומי ושלח אותו בחזרה לשרת באמצעות HTTP. אבל תוקפים יכולים גם להשתמש ב-JavaScript כדי לגשת אליהם דרך הדפדפן, כך שהם מטרות קלות.

קובץ ה-cookie של HTTP בלבד הוא מדיניות שמונעת מסקריפטים בצד הלקוח לגשת לנתוני קובצי Cookie. המשמעות היא שגם אם האפליקציה שלך מכילה פגיעות ותוקף מנצל אותה, הוא לא יוכל לגשת לקובץ ה-cookie.

הנה דוגמה לאופן שבו אתה יכול ליישם את מדיניות קובצי ה-cookie של HTTP בלבד ב-Node.js באמצעות Express:

אפליקציה.להשתמש(אֶקְסְפּרֶס.מוֹשָׁב({
סוֹד: "סוֹד",
עוגייה: {
http בלבד: נָכוֹן,
לבטח: נָכוֹן
}
}))

אם תוקף ניסה לגשת לקובץ ה-cookie עם http בלבד תג מוגדר כ-true כפי שמוצג לעיל, הם יקבלו מחרוזת ריקה.

סקריפטים חוצי אתרים הוא יעד קל להאקרים

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