אביב HTTP / HTTPS אבטחת ערוצים

1. סקירה כללית

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

השימוש ב- HTTPS לאימות הוא חיוני בכדי להגן על שלמות הנתונים הרגישים בעת הובלה.

המאמר מתבסס על מדריך הכניסה של Spring Security Login על ידי הוספת שכבת אבטחה נוספת. אנו מדגישים את הצעדים הדרושים לאבטחת נתוני האימות על ידי הגשת דף הכניסה דרך ערוץ ה- HTTPS המקודד.

2. הגדרה ראשונית ללא אבטחת ערוץ

נתחיל בתצורת האבטחה שהוסברה במאמר הנ"ל.

אפליקציית האינטרנט מאפשרת למשתמשים לגשת ל:

  1. / אנונימי.html ללא אימות,
  2. /login.html, ו
  3. דפים אחרים (/ דף הבית.html) לאחר כניסה מוצלחת.

הגישה נשלטת על ידי התצורה הבאה:

תצורת הריקות המוגנת על ידי @Override (HttpSecurity http) זורקת חריג {http.authorizeRequests () .antMatchers ("/ אנונימי *"). אנונימי (); http.authorizeRequests () .antMatchers ("/ login *") .permitAll (); http.authorizeRequests () .anyRequest () .authenticated (); 

או באמצעות XML:

בשלב זה, דף הכניסה זמין בכתובת:

//localhost:8080/spring-security-login/login.html

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

3. תצורת שרת HTTPS

למסירת דף הכניסה רק דרך HTTPS שרת האינטרנט שלך חייב להיות מסוגל להגיש דפי HTTPS. זה מחייב תמיכה ב- SSL / TLS מופעלת.

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

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

ניתן ליצור את חנות המפתחות באמצעות הנפקת הפקודה הבאה במסוף:

keytool -genkey -alias tomcat -keyalg RSA -storepass changeit -keypass changeit -dname 'CN = tomcat'

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

השלב הבא הוא עריכה conf / server.xml כדי שזה ייראה כך:

ה- SSL / TLS השני תג מוגש בדרך כלל בקובץ התצורה ולכן אין צורך להגיב ולהוסיף מידע על מאגר המפתחות. מידע נוסף זמין בתיעוד הקשור של Tomcat.

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

//localhost:8443/spring-security-login/login.html

שרתי אינטרנט אחרים מלבד Tomcat ידרשו תצורה שונה אך ככל הנראה דומה.

4. קביעת תצורה של אבטחת הערוץ

בשלב זה אנו יכולים לשרת את דף הכניסה גם תחת HTTP וגם HTTPS. סעיף זה מסביר כיצד לחייב את השימוש ב- HTTPS.

כדי לדרוש HTTPS עבור דף הכניסה שנה את תצורת האבטחה שלך על ידי הוספת הדברים הבאים:

http.requiresChannel () .antMatchers ("/ login *"). requiresSecure ();

או להוסיף את דורש-ערוץ = "https" תכונה לתצורת ה- XML ​​שלך:

לאחר נקודה זו המשתמשים יכלו להתחבר רק באמצעות HTTPS. כל הקישורים היחסיים למשל קדימה ל / דף הבית.html יירש את פרוטוקול הבקשה המקורית ויוגש תחת HTTPS.

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

5. ערבוב HTTP ו- HTTPS

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

עם זאת, אם אין אפשרות להשתמש בבלעדי ב- HTTPS, אנו יכולים להגדיר את האביב לשימוש ב- HTTP על ידי הוספת התצורה הבאה לתצורה:

http.requiresChannel () .anyRequest (). requiresInsecure ();

או להוסיף דורש ערוץ = "http" תכונות ל- XML:

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

5.1. כתובת אתר לעיבוד כניסה מותאמת אישית דרך HTTPS

תצורת האבטחה במדריך האבטחה המקורי מכילה את הדברים הבאים:

בלי להכריח / ביצוע_תחברות כדי להשתמש ב- HTTPS הפניה מחדש תתרחש לגרסת ה- HTTP שלו, ותאבד את פרטי הכניסה נשלח עם הבקשה המקורית.

כדי להתגבר על זה עלינו להגדיר את האביב לשימוש ב- HTTPS לכתובת ה- URL לעיבוד:

http.requiresChannel () .antMatchers ("/ login *", "/ perform_login");

שימו לב לוויכוח הנוסף / ביצוע_תחברות עבר ל antMatchers שיטה.

המקבילה בתצורת XML דורשת הוספת חדש <intercept-url> אלמנט לתצורה:

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

עם התצורה במקום, משתמשים יכולים להתחבר, אך לא לגשת לדפים מאומתים, למשל. / דף הבית.html תחת פרוטוקול HTTP, בגלל תכונת ההגנה על קיבוע הפעלות של אביב.

5.2. משבית הגנה על קיבוע הפעלה

קיבוע מושב הוא בעיה שלא ניתן להימנע ממנה לעבור בין HTTP ל- HTTPS.

כברירת מחדל אביב יוצר חדש מזהה הפעלה לאחר כניסה מוצלחת. כאשר משתמש טוען את דף הכניסה ל- HTTPS של המשתמש מזהה מושב קובץ cookie יסומן כ לבטח. לאחר הכניסה, ההקשר יעבור ל- HTTP והעוגיה תאבד מאחר ש- HTTP אינו בטוח.

כדי להימנע מכך סאחת הגנה על קיבוע הפעלה ל אף אחד נדרש.

http.sessionManagement () .sessionFixation () .none ();

או באמצעות XML:

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

6. מבחן

לאחר החלת כל שינויי התצורה הללו הגישה / אנונימי.html מבלי להתחבר (באמצעות אחד מהם // או //) יעביר אותך לדף דרך HTTP.

פתיחת דפים אחרים ישירות כמו / דף הבית.html אמור להעביר אותך לדף הכניסה באמצעות HTTPS ולאחר הכניסה תועבר בחזרה אל / דף הבית.html באמצעות HTTP.

7. מסקנה

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

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


$config[zx-auto] not found$config[zx-overlay] not found