שְׁאֵלָה:
סיסמאות הנשלחות בטקסט ברור עקב טעות המשתמשים בהקלדתם בשדה שם המשתמש
Lex
2013-03-05 22:09:55 UTC
view on stackexchange narkive permalink

בסקירת היומנים שנוצרו על ידי SIEMs שונים (Splunk, HP Logger Trial ו- SIEM של פלטפורמת AlienVault) שמתי לב שמשום מה לא מעט משתמשים נוטים לטעות בהקלדת הסיסמאות שלהם בשדה שם המשתמש, או בשדה שם המשתמש. כניסה לתחום OS, או בתוך יישומי אינטרנט. אני מנחש שאלו אנשים שלא יכולים להקליד בלי להסתכל על המקלדת ובניסיון לעשות זאת, לעשות זאת מהר, בסופו של דבר להקליד את הסיסמאות שלהם בשדה הלא נכון. המשמעות היא שהסיסמה נשלחת בטקסט רגיל לכל מקום ברשת ובסופו של דבר נרשמת ביומני עם אירוע שאומר משהו בסגנון:

  משתמש P @ $$ w0rd לא קיים [...]  

או

  חשבון נכשל בכניסה: P @ $$ w0rd [...]  

(כאשר P @ $$ w0rd היא סיסמת המשתמש בפועל)

זה נהיה די ברור להבין למי שייכות הסיסמאות: בדרך כלל האירוע הקודם או הבא (הלא) המוצלח ביותר ב- אותו קובץ יומן יודיע לך על אירוע שהופעל על ידי אותו משתמש.

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

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

הערה: b > יש כבר פוסט בנושא דומה, אבל אני מנסה לטפל בדרך למנוע את זה. מה הסיכון אם אני מקליד בטעות את הסיסמה שלי בשדה שם משתמש (כניסה ל- Windows)?


תשובה מקובלת: b> הלוואי שיכולתי לבחור כמה תשובות מהרשימה. לצערי אני צריך לדבוק רק בפורום אחד, אבל בפועל אני יכול לשלב ביניהם. תודה רבה על כל התשובות; אני רואה שאין פיתרון אחד. מכיוון שאני מסכים שהוספת 'דברים' מוסיפה מורכבות המגדילה את הסבירות לחורי אבטחה, עלי להסכים עם מרבית המצביעים כי ל- @ AJHenderson יש את התשובה האלגנטית והפשוטה ביותר בגישה ראשונה. בהחלט SSL ואימות קוד פשוט בשרת או אפילו בצד הלקוח. מכיוון שאני מחפש למתן לא נגד משתמשים זדוניים, אלא אלה המפוזרים, זה יסתדר. ברגע שזה יהיה במקום, נוכל להתחיל לבדוק את הרחבת היישום למשתמשים שאינם מיועדים במידת הצורך. שוב תודה רבה על הקלט של כולם.

חישב את שם המשתמש והסיסמא שלך ושלח אותם. כמובן שיצירת חשבונות חייבת להיות ב- HTTPS. לא צריך לבצע כניסות נוספות.
@SparKot the - הבעיה היא שאם יש לך את שם המשתמש, ללא מלח נפוץ, קשה מאוד לזהות את המשתמש. עם מלח נפוץ לשם המשתמש, ניתן לבצע התקפת שולחן קשת נגד היומנים כדי למצוא סיסמאות שהוזנו לא נכון.
טבלת קשת כאנליסט של סים עם יומני אפליקציות ואחרים שסופרים יותר מדי מ- 5000+ eps נשמע מאוד לא שווה. יש פתרונות סים כמו Q1 שיתריעו על regex שהוגדר לבדיקת סוגי שם משתמש.
@Lex אני מבולבל מה הסיכון שמישהו ירחרח את הסיסמה בצורה כזו מהחוט? כמה איום זה מרמז? אם יש לי משהו כמו sslstrip זה מכה את כל האבטחה בחוט.
היכנס רק אם שם המשתמש קיים ב- db?
@asadz האיום נראה לי די גדול, מכיוון שהסיסמה עשויה להיות מועברת בטקסט ברור משם המשתמש שהוגש כאילו היה שם המשתמש. הסבירות עשויה להיות מינימלית, אולם הסבירות להונאה פנימית ממישהו שמתעלל בהרשאות הצפייה ביומן הסיסמה המאוחסנת בטקסט ברור שמפחידה אותי ביותר.
@Lex אבל זה יהיה סיכון נוסף שכולנו יישמר בטקסט ברור על המכונה, התייחסתי לסיכון שמריחים אותי מהחוט. התוקף צריך להיות בר מזל מאוד במקרה כזה. תלוי בתגובת המערכת (אם היא מבקשת אסימון / סיסמה חד-פעמיים) או אימות מראש בצורה כלשהי, הסיכוי לפשרה ממשית הוא הרבה פחות.
@asadz אני מסכים איתך 100%
@CodesInChaos זה רעיון מעניין ואני בטוח שאפשר ליישם מסנן regex בשביל זה.
מי מאיתנו שיכול להקליד בלי להסתכל על המקלדת יכול לעשות את הטעות הזו גם. בדרך כלל אנחנו גם לא ממש צריכים להסתכל על המסך ואם אחד מוסחת מעט טעות כזו קל לעשות. זהו היתרון של מהדורת Windows XP Home וממשק מאוחר יותר שבו הוא מהווה תפריט של משתמשים לבחירה. כמובן, לא שימושי עם יותר מקומץ משתמשים.
זה קרה לי כל הזמן מהסיבה הבאה: בדרך כלל, כשאני פותח את המחשב שלי, הוא זוכר שהייתי המשתמש האחרון ורק את הסיסמה צריך להזין. לעתים קרובות אני [[ctrl] - [alt] - [del] `ומזין את הסיסמה שלי לפני שההספק יוחזר לצג שלי. עם זאת, אם הכניסה האחרונה שלי הייתה באמצעות שולחן עבודה מרוחק, שם המשתמש מנוקה. בעקבות השגרה הרגילה שלי בתרחיש זה נגרמת הזנת הסיסמה כשם המשתמש.
הקלדת הסיסמה שלי למשהו אחר שאינו תיבת הזנת סיסמה היא ככל הנראה הגורם המוביל לשינויים בסיסמאים עבורי. אני כנראה צריך לעשות את הטעות הזו לעתים קרובות יותר!
יש לי שתי מכונות ומקלדת אחת. באמצעות עכבר ללא גבולות אני לפעמים מקליד את הסיסמה שלי בכל פעם שאני חושב שהסמן ממוקד. לא תמיד התיבה שזקוקה לכניסה
אני מרגיש פתאום צורך לשנות סיסמאות שונות ... כמו כן, כאשר עשיתי זאת בעבר, פעמים רבות מה שקורה הוא שאני מקליד ממש מהר ובטעות מפספס את מקש "הכרטיסייה" כדי לעבור לשדה הבא. במילים אחרות ... חשבון נכשל בכניסה: MikeSP @ $$ W0RD
שמתי לב לבאג ממש מעצבן כאשר בדף אינטרנט אעבור לשדה הסיסמה ואתחיל להקליד לפני שהדף מסיים לטעון, ואז כאשר הדף אכן יסתיים (חלקית דרכי להקליד את הסיסמה שלי) הוא יקרע את המיקוד מה שדה סיסמה וחזרה לברירת המחדל (בדרך כלל שדה שם המשתמש). הלוואי שכולם יוודאו שהמוצר / אתר האינטרנט שלהם לא יעשה זאת.
אם ניתן, האם תוכל להוסיף שדה חדש, כמו להזין מחדש סיסמה ולהוסיף אימות לצד הלקוח?
@Lex "... משום מה ..." רק ספקולציות על הסיבה: האם יש javascript בדף שמציב את המיקוד בתיבת שם המשתמש לאחר טעינת הדף? אתר הבנקאות שלי עושה זאת ומצאתי את עצמי מקליד את ה- pw בשדה שם המשתמש בגלל עומס הסינכרון. (למשל, הקלדתי את שם המשתמש שלי ותוך כדי הקלדה - או ממש לפני ההקלדה - ה- pw שלי, העמוד היה נטען לחלוטין, הגדיר את המיקוד לשם המשתמש ו- pw שלי יעבור בשדה שם המשתמש).
@Sufyan - כן, זה יהיה גם יעיל, אבל זה יהיה להיט שימושי מכיוון שהוא דורש עבודה נוספת מצד המשתמש שבדרך כלל תגרום לו להתקבל בצורה גרועה. לא אומר שזה לא יכול להיות הבחירה הנכונה במצבים מסוימים, אבל זה לא יהיה פופולרי.
-> משתמש P @ $$ w0rd לא ** יוצא ** הוא שגיאת הקלדה ברורה.
[מתנצל אם מישהו אחר כבר הגיב את ההערה הזו] דברים מסוג זה קורים הרבה יותר עכשיו, כאשר כל כך הרבה אנשים משתמשים בדברים כמו KeePass כדי להקליד אוטומטית את תעודותיהם. קל מאוד למקד את השדה הלא נכון ואז השם, הכרטיסייה, הסיסמה, הקלדת ההזנה אוטומטית ממלאים את השדות הלא נכונים.
@ray023 לא יכול להגיד לך את זה, אני חושש. עם זאת זה קורה גם לאנשים שעושים את הטעויות שלהם בכניסה לחלונות שלהם.
לאחרונה היה לי משהו דומה כאשר משתמש שם את 'Authorization Basic ' בכתובת האתר עצמה (שאילתת פרמטר) במקום בכותרת HTTP ... סליחה עליו אבל בקשתו עברה לקובץ "NCSA-logs" ואיננו יכולים פשוט למנוע רישום מכיוון שאיננו מנתחים את הודעת היומן לפני רישוםו.
שבע עשרה תשובות:
AJ Henderson
2013-03-05 23:33:26 UTC
view on stackexchange narkive permalink

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

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

פשוט, אך אלגנטי. הלוואי שיכולתי לתת לו +5.
אכן. אם ננסה לשלב זאת עם איזה פילטר בסיסי ברמה כפי שהציע @CodesInChaos. +1
בקרת ג'אווה סקריפט עוקפת תעביר את שם המשתמש לרוחב החוט שבו נמצא הסיכון. זה היה נבחר על ידי משהו הדומה ל- wireshark ואם ה- ssl שלו הוא עדיין יהיה למשל sslstrip http://www.thoughtcrime.org/software/sslstrip/
חבל שלא נוכל לשכנע את MS ליישם זאת לדיאלוג הכניסה לחלונות.
@asadz - כן, זה לא מניעה מפני שתוקף יעשה משהו, השאלה הייתה רק מה אפשר לעשות כדי למנוע סיסמאות להסתיים בקבצי יומן על ידי משתמשים שעושים טעויות.
האם ניתן להבטיח זאת ללא פקדי JavaScript בדפדפנים מודרניים? האם יש סוג כלשהו של רכיב נדרש לפני HTML5 (http://john.foliot.ca/required-inputs/)
@DanNeely אך תיבת דו-שיח של כניסה ל- Windows יכולה להכיל סיסמה באורך אפס. אז אי אפשר ליישם את הפיתרון הזה שם, נכון?
@EricG: בהתחשב בכך שהדאגה * העיקרית * של OP היא ביומני השרתים ולא ברחרוח רשת, ההיגיון יכול להיות משוכפל בצד השרת לפני שיכלול את שם המשתמש בהודעת היומן.
@ruakh: זו נקודה טובה, אבל זה לא מה שהתשובה אומרת, היא אומרת למנוע הגשת טפסים, ולא למנוע רישום, מה שמוצע בכמה מהתשובות האחרות.
@EricG: כן, אני מסכים. חלק ניכר ממטרת ההערות היא לעזור בשיפור התשובות, ולכן הצעתי משהו שלדעתי יעזור לפתור את הבעיה שלך בתשובה זו.
@AnuragKalia אז אפשר זאת רק במקרה של מדיניות סיסמאות.
תרומה פופולרית של @AJ הנדרסון :).
מסכים - נחמד מהיר וקל לזכות שם לצד הלקוח.
האם יש למישהו דרך קונקרטית לעשות זאת, או שאנו מסתמכים על JavaScript בלבד? אם כן, האם עלינו להרחיב תשובה זו בפירוט מסוים?
@EricG - עדכנתי את התשובה כדי לשקף שניתן לעשות זאת גם בצד השרת. אמנם טופס היא מילת מפתח לפרסום ב- HTML, אך זו מעולם לא הייתה משמעות המשמעות של תשובתי. הרעיון הוא פשוט שלא תעבד ניסיון התחברות עד שלשדה הסיסמה יהיה ערך. זה יכול להיות בשרת או בלקוח.
@Iszi אתה * יכול * לתת לו +5 על ידי זריקת שפע.
@AJHenderson: אני מניח שיומני שרת האינטרנט שלך או יומני תעבורת הרשת עשויים להכיל את הסיסמה. אתה יכול להפסיק את העיבוד לפני שנוצרים יומנים ברמת היישום. תזדקק למסננים בכניסה לאינטרנט / ברשת.
@EricG - אם אתה רושם את נתוני ההודעה של כל הגשת הפורום, זה הולך להיות הרבה רישום. אני מניח שעדיין תצטרך להיזהר מאופן הגדרת הדברים, אך אני חושב שכנראה תוכל לעקוף את היותו מחובר כל עוד הוא לא באמת מנסה את האימות. נכון, יתכן שזה לא יעבוד בכל המערכות.
פיתרון יפה, תודה על ההצעה הזו! כל שיחות הכניסה צריכות ליישם זאת. אתחיל ביישום זה באחת היישומים שלי.
fixulate
2013-03-05 22:13:39 UTC
view on stackexchange narkive permalink

בהנחה שיישום ה- backend שלך ו- SIEM צריכים להציג ניסיונות כניסה נכשלים ליישומים שונים (ובכך להציג את הודעת השגיאה "User P @ $$ w0rd is not valid") אז זה לא יהיה טריוויאלי לעצור את זה.

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

אכן. זה יפתור מחצית מהבעיות / החששות שלי. +1. תודה רבה.
אני מניח ש- ssl הוא דרך לעקיפת הבעיה ולא תיקון קוד. יש לתקן את הבעיות במקור במקרה הטוב.
@asadz: העובדה שהיישום מציג את שם המשתמש כאשר הוא הוזן בצורה שגויה אינו באג של יישום, הוא נועד לפונקציונליות ואינו דורש תיקון imo.
@devcity2012 פונקציונליות המיועדת אולי אך מחשבה גרועה; יש חלק מניתוח הדרישות בהנדסת תוכנה; זה המקום שבו הדברים האלה צריכים להיות חמוצים, רצוי באמצעות תרשים רצף; מדוע אין לבדוק טופס לפני הגשתו? אימות הקלט בטל?
אם הטופס לוקח שם משתמש וסיסמה ושניהם קיימים ואז ה- backend מוגדר להציג את שם המשתמש, זו אינה שגיאת יישום אם המשתמש מזין בטעות את הסיסמה שלו בשדה הטקסט שם המשתמש.
אני מדבר על זה כבעיה רק ​​במובן שבו בקשה תוגש רק על פי שדה שם משתמש?
כן בטוח, אז אפשר לעצור את זה כן. :)
goodguys_activate
2013-03-05 23:43:00 UTC
view on stackexchange narkive permalink

אז הבעיה היא שאתה לא רוצה שאנליסטים יראו את הסיסמאות בקבצי היומן הרגישים?

זהירות: גם אם היית משתמש ב- Javascript הוא לא עוסק בנתוני הסיסמה השמורים בדיסק שלך בטקסט רגיל.

פיתרון טוב יותר הוא לעבד מראש את היומנים לפני שהאנליסטים יראו אותם ולערוך מידע ביומנים.

אתה יכול לבצע את הסינון הזה שורה אחר שורה אם אתה רושם רשימת היתרים או רשימת שחורים אחרים שורות. לדוגמא:

באפשרותך לרשום שמות משתמש בהמתנה כאשר הם מופיעים בקובץ יומן ש

  • יש תבנית ([az] + מספר) או ([az] + נקודה + [az])
  • כולל שם דומיין ואחריו קו נטוי "\" לסביבות AD
  • מופיעים מספר פעמים
  • האם יש לשטוף בספריית LDAP של שמות משתמש ידועים לפני שהאנליסטים יראו אותה

אתה מזהה וסיסמאות גם ברשימה השחורה על ידי:

  • מדיניות הסיסמאות נוהגת לרוב על פי תבנית (סמל אחד, עליון / תחתון, x תווים ...)

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

אז איך נראה קו מסונן?

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

  eb574b236133e60c989c6f472f07827b Redact1 7e67b89a695bfbffc05b7ed2c38f927f Redact2 ..etc  

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

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

+1 מומלץ תמיד להניח כי יומנים מכילים מידע רגיש אלא אם כן מוסר באופן מפורש או עד שהוכח אחרת.
Nathan Goings
2013-03-06 07:13:02 UTC
view on stackexchange narkive permalink

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

  1. המשתמשים לא מכניסים מידע בצורה נכונה.
  2. אנליסטים יכולים להבחין בסיסמאות ביומנים.
  3. סיסמאות נשלחות בטקסט ברור והן רגישות ל אדם באמצע שביתה> האזנות סתר.

לדעתי זה פשוט למדי לתיקון.

  1. קבל שגיאת משתמש, .
  2. אל תרשמי שמות משתמש לא תקפים, במקום היכנס ניסיונות כושלים ו- IP.
  3. אל תשלח שמות משתמש בטקסט ברור. השתמש בטכנולוגיה כמו HTTPS או השתמש ב- javascript כדי לקודד את הטקסט הרגיל (למשל ROT13).
  4. o>

    יומן דוגמה לכניסה נכשלה ואז לנסות שוב בהצלחה.

      [00:00:00] כניסה לחשבון נכשלה החל מה -192.168.1.100 [00:21:00] כניסה מוצלחת 'שורש' מ- 192.168.1.100  

    קריאה על פני תשובות אחרות, ברצוני לכלול זאת.

  • אמת את כל השדות לפני ההגשה.
  • שקול לפרק את הטופס בין מספר דפים כאריק. הזכיר G.
אני לא בטוח למה בדיוק אתה מתכוון ב"גלגל בעצמך JavaScript ", אבל אני די בטוח שזה רעיון רע.
-1 לעולם אל תגלגל https משלך ב- javascript. אם זה לא מה שהתכוונת נא בבקשה.
@makerofthings7 הבהרתי. מעולם לא אמרתי לגלגל https ב- javascript, אמרתי OR javascript (הובהר באמצעות הצפנה). אמנם לא הכי קל ליישם * נכון *, אך ישנם משאבים לפיתרון מסוג זה. זו תשובה תקפה ואני לא מבין למה שווה נקודה שלילית.
Javascript עם קוד הצפנה שנמסר מהשרת (וזה מה שאתה נראה לתאר) הוא לעתים רחוקות רעיון טוב. השרת יכול לשנות את קוד JS זה ולחשוף את המפתחות הפרטיים המקומיים. וקטור נוסף הוא XSS / CSRF. זה עיצוב אבטחה מסוכן. HTTPS צריך להיות מינימלי. ספר לי אם אתה חושב על פריסה אחרת, כגון יישום HTML / SPA עטוף ב- PhoneGap או משהו דומה.
@makerofthings7, תהליך החשיבה שלי לא נועד לאדם באמצע. זו פחית תולעים. תיארתי את האזנות סתר. אחת המערכות שעבדתי בה קידדה את כל נתוני הטופס עם JavaScript (עם מפתח אקראי) כך שעמיתים לעבודה לא יכלו לחטט זה בזה.
Eric G
2013-03-06 01:49:18 UTC
view on stackexchange narkive permalink

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

  1. בדף הראשון קבל רק את שם המשתמש
  2. בדף הבא בתהליך בקש את הסיסמה ורק מהדהד את שם המשתמש בחזרה כך שהוא אינו שדה הניתן לעריכה

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

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


כמו כן, בהתחשב בכניסה שלך: אולי תוכל לשנות את הרישום שלך. לא לכלול אישורים ממשיים?

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

אם אתה מבצע בדיקה ושם המשתמש לא שם, משהו כמו "משתמש מכתובת ה- IP '192.168.0.10' ניסה להתחבר באמצעות מזהה משתמש לא חוקי".

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

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

אימות סדרתי? אוּלַי
שתי טפסים בצעדים הם למעשה המקום היחיד בו אני אמור להכשיל ולזרוק את הסיסמה שלי בשדה שם המשתמש בעמוד הראשון!
הייתי מעוניין לדעת יותר על מקרה ה- UX, האם יש לך סיבה שאתה חושב שזה קורה? האם הכניסה לאתר שומרת את שם המשתמש שלך בביקורים חוזרים או לא? הייתי מתאר לעצמי שזה יעזור (אבל עלול להזיק) מכיוון שלא תהיה לך אפילו תיבה להקליד אם היא תמלא את שם המשתמש שלך. ספר לי עוד כמה פרטים ואראה אם ​​אוכל להוסיף מידע נוסף לתגובה שלי.
זה גורם לי להיות הרבה פחות מתוסכל מכך שאחד מהבנקים שלי עושה זאת, תודה על התשובה הזו (חח).
Abhijit
2013-03-06 01:23:39 UTC
view on stackexchange narkive permalink

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

  1. מזהה משתמש או חסר סיסמה
  2. סיסמה שאינה תואמת את ההנחיות
  3. ol>

    כך שבכל מקרה כשאתה עדיין רואה ערכים אלה ביומן,

      משתמש P @ $$ w0rd לא יוצא [...] חשבון נכשל בכניסה: P @ $$ w0rd [...]  

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

    אז הפוך אותו לאימות דו-מעבר

    1. מעבר ראשון, שלח את כל הפרטים המוצפנים כולל סיסמה לשרת. ודא אם שדה הסיסמה ריק.
    2. מעבר ראשון, ודא אם הסיסמה תואמת את שגיאת הנחיות אחרת.
    3. מעבר ראשון, בדוק אם הסיסמה קיימת ב- DB שלך. אם לא שגיאה.
    4. שלח בחזרה תגובת RPC ללקוח והניח לו לשלוח את מזהה המשתמש והסיסמה כעת.
    5. כעת בצע את תהליך האימות
    6. ol >

      כל מהות התהליך הזה היא

      1. למזער את הסיכון. שים לב, אינך יכול לבטל את הסיכון לאפס
      2. אי אמון על הלקוח.
      3. o>

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

הצעה מצוינת. אני חושב שרוב התשובות כאן עד כה מציבות סיכום טוב והכל הגיוני מאוד. +1
Kevin Reid
2013-03-06 10:06:44 UTC
view on stackexchange narkive permalink

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

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

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

-1
nalply
2013-03-06 17:24:05 UTC
view on stackexchange narkive permalink

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

תן לאיזה ספק זהות אחר לעשות את העבודה הקשה בכדי לשמור על אישורי האישורים. בצע את אותו הדבר כמו שעושה StackOverflow: אפשר אימות באמצעות OpenID, Gmail וכו '.

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

dr jimbob
2013-03-06 04:29:30 UTC
view on stackexchange narkive permalink

סקריפט JavaScript בצד הלקוח נראה סביר.

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

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

Daniel Pryden
2013-03-06 09:53:14 UTC
view on stackexchange narkive permalink

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

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

איך זה עובד? האם הוא בודק את 'שם המשתמש' מול 'הסיסמה' המאוחסנת במסד הנתונים, אם הם תואמים, איפוס בכוח? האם זה מבוסס אינטרנט או גם ברמת Windows / LDAP? אם כן, האם זה מוצר מותאם אישית או מדף?
@EricG: זו מערכת מותאמת אישית, ולא בניתי אותה, כך שאני לא ממש יודע איך היא יושמה. עם זאת, אני מאמין שזה עובד על ידי חיתוך שם המשתמש ובדיקת החשיפות לעומת סיסמת הסיסמה. ההבנה שלי היא שהם מחזיקים מסד נתונים איפשהו של "סיסמאות שנמצאות בנסיבות חשודות" ומפקיעים את כל הסיסמאות הפעילות התואמות לרשימה זו.
אני חושב שהתגעגעת לחלק שבו הוא שאל כיצד הם יודעים שהסיסמה הוזנה בשדה השם.
@jcolebrand: מצטער, חשבתי שהסברתי כי: חשיש כל מה שנכנס לשדה שם המשתמש ובדוק את החשיש מול בסיס הנתונים של הסיסמאות. אופציונלי להשתמש במשהו כמו פילטר בלום אם יש לך מאגר סיסמאות גדול באמת ורוצה לבדוק במהירות. אין לי מושג אם זה מה שהם עושים בפועל, אם כי: אולי יש דרך טובה עוד יותר.
זה באמת יכול להיות דבר חוקי לעשות. ואז הבעיה היא שאני יכול להכניס 1234567 או password1 וכו 'ולבטל סיסמאות שלמות. אם אני חושב שאני יודע את סיסמת החברים שלי וכו '.
אני עם EricG. אני לא מבין איך ליישם את זה בצורה מאובטחת. אם מסד הנתונים של סיסמאות מאחסן סיסמה באמצעות מלח (ומשתמש בחשיש סיסמה איטי כמו bcrypt), לא קל לוודא אם שם משתמש שגוי הוא אכן הסיסמה של מישהו, ואם כן, מצא של מי זה היה - הכי טוב שאתה יכול לעשות הוא חיפוש ממצה על כל המשתמשים במסד הנתונים, שאינו ניתן להרחבה. אם מסד הנתונים של הסיסמאות אינו משתמש במלח (או אינו משתמש ב- hash סיסמא איטי), יש לך בעיות חמורות יותר - זה לא ברור.
Izac Mac
2013-03-06 21:18:47 UTC
view on stackexchange narkive permalink

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

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

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

השימוש בכתובות דוא"ל כשמות משתמשים רחוק מלהיות אוניברסלי עבור אפליקציות ציבוריות, והוא נדיר באפליקציות פנים-ארגוניות. קידוד צבעים ככל הנראה לא יעזור: הסיבה הרגילה לשימוש בשדה הלא נכון היא חוסר תשומת לב לאיזה שדה הוא ממוקד (במיוחד כאשר שדה שם המשתמש בדרך כלל ממולא מראש אך משום מה אינו נמצא במקרה אחד).
l--''''''---------''''''''''''
2013-03-06 02:01:05 UTC
view on stackexchange narkive permalink

מדוע לא להגיב רק עם זה?

  שם משתמש זה לא קיים  
אתה כנראה לא צריך לעשות את זה, או אפילו לקחת זמן אחר בתגובה. תגובות כאלה ולפעמים ההפרש בכמות הזמן שלוקח לעיבוד יכול להיות מנוצל לרעה מספק רשימה של שמות משתמש תקפים, שיכולים לשמש אפילו מסיבות שאינן רק ניסיון להשיג גישה לאתר / לשירות עצמו (למשל הם יכולים נסה לשלוח דוא"ל לאותו שם משתמש ב- gmail וכו ').
@GaryS.Weaver: <- כן. למשל, אתה יוצר מבחן A / B בכוח הזונה שלך ובכל פעם שאתה מקבל את התנאים השונים שאתה יודע זיהית שם משתמש חוקי.
@GaryS.Weaver אין פיתרון הוכחה לטיפש, אבל אתה לא חושב שזה קצת מוגזם? הוא לא מנהל americanexpress.com
@ Артём-Царионов זה תלוי בך, בו ובכל השאר ליישם את האבטחה כראות עיניהם.
הבעיה בשאלה היא ששם המשתמש מסתיים בקבצי יומן רישום אשר מבצע רישום קבוע של שם המשתמש בטקסט רגיל. אם אי פעם נפגע השרת או שמנהל מערכת לא היה ישר, הוא יכול היה לגשת לחשבון המשתמש ללא שום רשומה במערכת. קובץ היומן עדיין צריך לדעת אילו שמות משתמש מנסים, ולכן הפתרון יצטרך איכשהו למנוע שמירת סיסמה ביומן אם היא תושם בשדה שם המשתמש.
-1
A. Wilson
2013-03-06 06:48:39 UTC
view on stackexchange narkive permalink

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

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

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

sharp12345
2013-03-06 08:52:51 UTC
view on stackexchange narkive permalink
  • אפשר רק להעביר חשיפות md5 של שמות משתמש וסיסמאות (או חשיש דומה), כך שכל מה שייכנס בקבצי היומן תמיד ייראה כמו אורך קבוע של תווים אקראיים, מה שלא יגרום לאף אחד להיות מסוגל תנחש במהירות שמדובר ב- md5 של סיסמה או שם משתמש.

Con: כדי להשוות עם שמות משתמש במסד הנתונים שלך, עליך לאחסן שתי עמודות למשל. 'שם משתמש' ו- 'md5 (שם משתמש)' או שאתה צריך לבצע חשיש דינמי בכל פעם שאתה מבקש שם משתמש להתחברות.


  • צור רשומת יומן רק אם שם המשתמש קיים במסד הנתונים, אחרת כניסה IP בלבד.

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

  • בצע הגבלה מסוימת לשמות משתמש וסיסמאות מותרים:

    1. סיסמאות חייבות להכיל תו מיוחד כמו! @ # $% ^ & * ()
    2. שמות משתמש לא חייבים להכיל שום תו מיוחד

בדרך זו, תוכל לבצע JavaScript כדי לזהות במהירות אם שם המשתמש שהוזן או סיסמה.

louis_coetzee
2013-03-06 15:54:52 UTC
view on stackexchange narkive permalink

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

נכון, אולם מה עם אנשים שנכנסים לתחום Windows שלהם מהמחשב הנייד? אנו אוספים גם יומנים אלה.
Tek Tengu
2013-03-06 17:55:00 UTC
view on stackexchange narkive permalink

יש לי נקודה אחרת ... איזו בעיה אתה מנסה לפתור באמת?

  1. סיסמאות גרועות? כְּלוֹמַר. כאשר אתה רואה אדם שמשתמש ב"סיסמה "(או גרסה) אתה רוצה להיות מסוגל להתחקות אחר המשתמש ולתקן אותו?

  2. סיסמאות שנשלחות בברור?

  3. או הבעיה עם אידיוטים שאינם יכולים להקליד או לקרוא טפסים (או אולי ממשק משתמש מעוצב רע)?

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

עכשיו לכל אחד.

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

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

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

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

רק 2 הסנטים שלי.

rjt
2014-07-31 14:21:09 UTC
view on stackexchange narkive permalink

ביומטריה זולה למדי כעת ועובדת לפחות 80% מהזמן. אני מוצא את זה נהדר במכשירי TabletPC ורציתי לפרוס מקלדות ביומטריות כי זה מהיר יותר (לפחות 80% מהזמן הזה).

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



שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...