2010-06-11 4 views

답변

15

Session.Abandon() 현재 세션이 종료됩니다. Session_End이 (가) 해고 다음 요청이 Session_Start 이벤트를 발생시킵니다.

은 세션 데이터를 지우고 세션은 계속 유지됩니다.

세션 ID는 브라우저가 닫히지 않는 한 두 경우 모두 동일하게 유지됩니다. 요컨대

:

Session.Abandon(); 현재 Session 취소.

Session.Clear();Session 상태에서 모든 값을 지 웁니다.

0
Session.Abandon() 

은 전체 세션을 파괴/종료합니다.

Session.Clear() 

은 세션 데이터 (즉, 현재 세션의 키와 값)를 제거/삭제하지만 세션은 활성 상태가됩니다.

Session.Abandon() 메서드와 비교하여 Session.Clear()는 새 세션을 만들지 않으며 세션의 모든 변수를 NULL로 만듭니다.

세션 ID는 브라우저가 닫히지 않는 한 두 경우 모두 동일하게 유지됩니다.

0

어떤 것들은 내 경험을 여기에서주의해야 할 :

Session.Abandon()

가 현재의 세션을 무효화하지 않습니다. 오래된 요청은 재생할 때 잘 실행됩니다.

그러나 전화를 건 후에는 버려진 세션 사전의 내용을 설정해도 영구적 인 영향을 미치지 않습니다. 다음 요청은 (이전 요청을 재생하여 동일한 세션 ID를 사용하더라도) 새로운 새 세션 사전을 가져오고 이전에 변경 한 사항 (메소드를 호출 한 후)이 없습니다.

따라서 Session.Abandon()은 전체 세션의 지속성을 완전히 중단하는 반면 Session.Clear()은 데이터 만 제거합니다.

또한 응용 프로그램을 재생 공격으로부터 보호해야하는 경우 세션을 확인하고 이러한 기본 제공 방법에 의존하지 않는 논리를 추가해야합니다. 그것들은 세션 데이터의 지속성을 관리하기위한 것이지 응용 프로그램 보안을위한 것이 아닙니다.

관련 문제