יש כאן כמה תשובות נהדרות מנקודת מבט ביטחונית טהורה. זווית ה- XSS העצמית נכונה לחלוטין, גם אם החלק העליון שקשור לזה לא יצר במפורש את החיבור שהיא מרמזת.
להיות, בעצם, שאם אנשים יכולים להטעות להפיל קוד XSS עצמי. למסוף ה- dev, מדוע שתצפה שלא יטעה אותם ליפול למרכיב קלט כלשהו בממשק המשתמש שלך?
כמה תשובות אחרות קושרות את זה יחד לאופן שבו זה יכול ליצור נושאים רחבים יותר כאשר הוא (imo, באופן בלתי נמנע, אם מישהו מתעתע לביצוע XSSing עצמי) מוביל לפשרות בחשבון.
אני חושב שזו כנראה הסיבות המיידיות והמידיות. אבל אני עדיין רוצה לטפל בזה מזווית אחרת:
שיטות פיתוח: השלכות של התרת XSS עצמי
נניח שמשתמש יכול לאחסן נתונים מסוימים באינטרנט אפליקציה. עכשיו אני מדבר רק על סוג זה של נתונים שהמשתמש יכול לעצמם להציג, ולא זה שנועד לצפייה על ידי משתמשים אחרים ביישום האינטרנט.
הבעיה בהנחתך כאן היא ש זה מניח שאתה לא מונע XSS על כל הפלט של הנתונים המסופקים על ידי המשתמש כנוהג ברירת מחדל: באופן אידיאלי כמנגנון הפלט המוגדר כברירת מחדל של המחלקה או הפונקציה המשמשים לאחזור והפקת נתונים, כאשר כל סטייה דורשת פרמטר ספציפי כדי לבחור את שיטת סינון פלט.
אם אין לך קידוד של היישום שלך באופן ששיטת הפלט המוגדרת כברירת מחדל מונעת XSS (ויעדי פלט שונים כגון תכונות לעומת אלמנטים דורשים מתודולוגיות שונות עבור מה שיש ואינו 'לא מותר, ומכאן' ברירת מחדל '), וזה דורש יותר מאמץ (לא פחות) כדי למקד את הפלט כדי לאפשר (בתקווה שמופיע ברשימה הלבנה, "מטוהרת") לעבור כ- HTML / וכו' מקורי ...
כמה בטוחים שאתה לא הולך לעבור תאונה שבה השתקפות מסוימת של המשתמש da ta חזרה לאינטרנט לא מאפשר XSS מחוץ ל רק "נתונים שהמשתמש יכול לעצמם להציג"?
כי טעויות קורות. אנשים שוכחים צעדים בעת כתיבת קוד. כישלונות מתרחשים באימונים בהם נקודות מפתח או אפילו נושאים מתפספסות. יש אנשים שלא "RTFM": אפילו מפתחים. ארכיטקטורת היישום / מסגרת היישומים שלך צריכה להיות כולה לוודא ש הנתיב של הכי פחות התנגדות בעת כתיבת קוד הוא תמיד התוצאה הבטוחה ביותר , ולא התוצאה הבטוחה לפחות.
מתן אפשרות ל- XSS לפוטנציאל התרחשות על סמך קלט משתמש צריכה לדרוש פעולה חיובית, בחירה מפורשת של היזם ביחס לכל מקום זה עשוי להתרחש, ולא פשוט התוצאה הבסיסית, ברירת המחדל של משיכת נתוני המשתמש המאוחסנים ומשקף אותם בחזרה החוצה. אם הקוד שלך לא נכתב כך, כאשר הוא מונע XSS כברירת מחדל ודורש פרמטר עקיפה כלשהו כדי להשבית את טיהור הפלט הזה, אז זה סימן שאתה צריך להעריך מחדש את התהליך שלך.