משתמשים לא יכולים להדביק בשדות להזנת קלט

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

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

באופן כללי, לא צריך למנוע ממשתמשים להדביק ברכיבי <input>.

הסיבה לכך שהבדיקה של Lighthouse נכשלה

Lighthouse מסמנים קוד שמונע ממשתמשים להדביק בשדות קלט שאינם לקריאה בלבד:

בבדיקה של Lighthouse מוצג שהדף מונע ממשתמשים להדביק תוכן בשדה סיסמה

Lighthouse אוסף את כל הרכיבים מסוג <input> שאינם לקריאה בלבד, מדביק טקסט כלשהו בכל רכיב ולאחר מכן מוודא שאירוע paste לא נמנע על ידי בורר אירועים מותאם אישית.

אפשר גם למנוע הדבקה מחוץ למעבד אירועים של paste. מערכת Lighthouse לא מזהה את התרחיש הזה.

איך מפעילים הדבקה בשדות של סיסמאות

איתור הקוד שמונעת הדבקה

כדי למצוא ולבדוק במהירות את הקוד שמונעת הדבקה:

  1. מרחיבים את החלונית נקודות עצירה של Event Listener.
  2. מרחיבים את הרשימה Clipboard.
  3. מסמנים את התיבה paste.
  4. מדביקים טקסט כלשהו בשדה סיסמה בדף.
  5. DevTools אמור להשהות את הפעולה בשורת הקוד הראשונה ב-event listener הרלוונטי של paste.

הסרת הקוד שמונעת הדבקה

לרוב, מקור הבעיה הוא קריאה ל-preventDefault() בתוך מאזין האירועים paste שמשויך לרכיב הקלט של הסיסמה:

let input = document.querySelector('input');

input.addEventListener('paste', (e) => {
  e.preventDefault(); // This is what prevents pasting.
});

אם אתם מקשיבים לאירועי הדבקה רק כדי למנוע אותם, תוכלו להסיר את כל מאזין האירועים.

משאבים

קוד המקור לבדיקת משתמשים לא יכולים להדביק בשדות להזנת קלט