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

Lighthouse אוסף את כל הרכיבים מסוג <input>
שאינם לקריאה בלבד, מדביק טקסט כלשהו בכל רכיב ולאחר מכן מוודא שאירוע paste
לא נמנע על ידי בורר אירועים מותאם אישית.
אפשר גם למנוע הדבקה מחוץ למעבד אירועים של paste
.
מערכת Lighthouse לא מזהה את התרחיש הזה.
איך מפעילים הדבקה בשדות של סיסמאות
איתור הקוד שמונעת הדבקה
כדי למצוא ולבדוק במהירות את הקוד שמונע את ההדבקה:
- מרחיבים את החלונית נקודות עצירה של Event Listener.
- מרחיבים את הרשימה הלוח.
- מסמנים את התיבה
paste
. - מדביקים טקסט בשדה סיסמה בדף.
- DevTools אמור להשהות את הפעולה בשורת הקוד הראשונה ב-event listener הרלוונטי של
paste
.
הסרת הקוד שמונע הדבקה
מקור הבעיה הוא לרוב קריאה ל-preventDefault()
בתוך מאזין האירועים paste
שמשויך לרכיב הקלט של הסיסמה:
let input = document.querySelector('input');
input.addEventListener('paste', (e) => {
e.preventDefault(); // This is what prevents pasting.
});
אם אתם מקשיבים לאירועי הדבקה רק כדי למנוע אותם, תוכלו להסיר את כל מאזין האירועים.