C# 웹프로그램에서 세션을 완전히 삭제하려면 다음의 세 줄을 코딩하셔야 합니다.
1. 페이지에서 세션삭제 처리시
Session.Clear(); //세션에 저장된 값 삭제 Session.Abandon(); //세션 컬렉션을 삭제 Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); //세션에 사용했던 쿠키삭제
2. 클래스에서 세션삭제 처리시 (HttpContext.Current를 붙여주세요)
HttpContext.Current.Session.Clear(); HttpContext.Current.Session.Abandon(); HttpContext.Current.Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", ""));
Q1) Session.Clear() 와 Session.Abandon()의 차이는 무엇인가?
- Clear()는 세션에 저장된 키와 값만 삭제합니다. Abandon()은 세션객체를 삭제합니다. 많은 분들이 이에 대해 종종 Clear()는 책장에 꽂혀있는 책을 삭제하는 것이고 Abandon()은 책장 자체를 삭제하는 것과 같다고 설명합니다.
- Abandon()은 Session_End 이벤트를 발생시킵니다.
- Clear()는 실행즉시 세션값이 삭제되지만 Abandon()은 garbage collected 가능하도록 릴리즈 합니다.
Q2) 쿠키는왜 삭제하나요?
- 세션을 사용하면 웹사이트 접속자의 PC에 정보를 안남길거라 생각하시겠지만 세션ID는 쿠키형태로 저장하게 됩니다.
여러분이 개발한 프로그램이 보안취약점 개선 요청을 받았고, "쿠키를 사용하지 말고 세션을 사용하고 로그아웃시 세션을 날려주세요"라는 레포트를 받았다면 ASP.NET_SessionId 라는 이름에 저장된 세션ID값을 삭제하기 위해 Response.Cookies.Add(new HttpCookie("ASP.NET_SessionId", "")); 를 반드시 넣어줘야 합니다.
프로젝트의 성공을 기원합니다.
'ASP.net with C# (웹폼)' 카테고리의 다른 글
C# 엑셀 셀 형식표(mso-number-format) (0) | 2019.04.07 |
---|---|
System.ArgumentNullException: '값은 null일 수 없습니다. 문제 해결 (0) | 2019.04.06 |
런타임이란? 컴파일타임 과의 차이는? (1) | 2019.02.09 |
C# SMTP 메일발송, 옵션에 대한 설명 (0) | 2019.02.03 |
C#코딩시 정말 간단한 팁을 소개합니다. (0) | 2019.01.03 |