אימות גישה בסיסי

מתוך ויקיפדיה, האנציקלופדיה החופשית

בהקשר של פרוטוקול HTTP, אימות גישה בסיסי הוא שיטה עבור משתמש HTTP (למשל דפדפן אינטרנט) לספק שם משתמש וסיסמה בעת ביצוע בקשה. באימות HTTP בסיסי, בקשה מכילה שדה כותרת בצורה של Authorization: Basic <credentials>, כאשר credentials הם קידוד Base64 של מזהה וסיסמה, שביניהם סימן נקודתיים (:).

האימות יושם במקור על ידי ארי לוטונן ב-CERN בשנת 1993[1] והוגדר במפרט HTTP 1.0 בשנת 1996.[2] האימות נכלל במפרט RFC 7617 משנת 2015, שהחליף את מפרט RFC 2617 משנת 1999.

מאפיינים[עריכת קוד מקור | עריכה]

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

אבטחה[עריכת קוד מקור | עריכה]

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

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

HTTP אינו מספק שיטה לשרת אינטרנט להורות ללקוח "לצאת" מהמשתמש. עם זאת, ישנן שיטות לנקות אישורים שמורים בדפדפני אינטרנט מסוימים. אחת מהן היא הפניית המשתמש לכתובת URL באותו דומיין, תוך שימוש באישורים שגויים בכוונה. עם זאת, התנהגות זו אינה עקבית בין דפדפנים וגרסאות דפדפן שונות.[3] Microsoft Internet Explorer מציע פונקציית JavaScript ייעודית לניקוי אישורי קובץ שמור:[4]

<script>document.execCommand('ClearAuthenticationCache');</script>

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

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

פרוטוקול[עריכת קוד מקור | עריכה]

בצד השרת[עריכת קוד מקור | עריכה]

כאשר השרת רוצה שהדפדפן יאמת את עצמו כלפי השרת לאחר קבלת בקשה לא מאומתת, עליו לשלוח תגובה עם שורת מצב HTTP 401 - לא מורשה[7] ושדה כותרת WWW-Authenticate.[8]

שדה הכותרת של WWW-Authenticate עבור אימות בסיסי בנוי באופן הבא:

WWW-Authenticate: Basic realm="User Visible Realm"

השרת עשוי לבחור לכלול את פרמטר ערכת התווים מ-RFC 7617:[3]

WWW-Authenticate: Basic realm="User Visible Realm", charset="UTF-8"

פרמטר זה מציין שהשרת מצפה מהלקוח להשתמש ב-UTF-8 לקידוד שם משתמש וסיסמה.

בצד הלקוח[עריכת קוד מקור | עריכה]

כאשר הדפדפן רוצה לשלוח אישורי אימות לשרת, הוא משתמש בשדה כותרת "הרשאה".

שדה כותרת ההרשאה בנוי באופן הבא:[9]

  1. שם המשתמש והסיסמה, וביניהם תו בודד של נקודתיים (:). המשמעות היא ששם המשתמש עצמו אינו יכול להכיל נקודתיים.
  2. המחרוזת המתקבלת מקודדת לרצף אוקטטים. ערכת התווים לשימוש עבור קידוד זה אינה מוגדרת כברירת מחדל, כל עוד היא תואמת ל-US-ASCII, אך השרת עשוי להציע שימוש ב-UTF-8 על ידי שליחת פרמטר ערכת תווים.[9]
  3. המחרוזת המתקבלת מקודדת באמצעות גרסה של Base64 (+/ ועם ריפוד).
  4. שיטת ההרשאה ותו רווח (למשל, "Basic ") מוצמד לפני המחרוזת המקודדת.

לדוגמה, אם הדפדפן משתמש ב-Aladdin כשם המשתמש ו-open sesame כסיסמה, אז ערך השדה הוא הקידוד Base64 של Aladdin:open sesame, או QWxhZGRpbjpvcGVuIHNlc2FtZQ==. לאחר מכן יופיע שדה כותרת ההרשאה כ:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ "Announcing Access Authorization Documentation". 10 September 2022. http://1997.webhistory.org/www.lists/www-talk.1993q3/0882.html.
  2. ^ "Hypertext Transfer Protocol -- HTTP/1.0". www.w3.org. W3C. 19 בפברואר 1996. נבדק ב-7 בפברואר 2022. {{cite web}}: (עזרה)
  3. ^ 1 2 "Is there a browser equivalent to IE's ClearAuthenticationCache?". StackOverflow. נבדק ב-15 במרץ 2013. {{cite web}}: (עזרה)
  4. ^ "IDM_CLEARAUTHENTICATIONCACHE command identifier". Microsoft. נבדק ב-15 במרץ 2013. {{cite web}}: (עזרה)
  5. ^ "540516 - Usability: Allow users to clear HTTP Basic authentication details ('Logout')". bugzilla.mozilla.org (באנגלית). נבדק ב-2020-08-06. Clear Recent History->Active Logins (in the details) is used to clear the authentication.
  6. ^ "Clear browsing data - Computer - Google Chrome Help". support.google.com. נבדק ב-2020-08-06. Data that can be deleted[...]Passwords: Records of passwords you saved are deleted.
  7. ^ RFC 1945 Section 11. Access Authentication
  8. ^ Fielding, Roy T.; Berners-Lee, Tim; Henrik, Frystyk. "Hypertext Transfer Protocol -- HTTP/1.0". tools.ietf.org.
  9. ^ 1 2 Reschke, Julian. "The 'Basic' HTTP Authentication Scheme". tools.ietf.org.