세션 하이재킹 작동 방식에 대해 잘 알고 있기 때문에 폼 인증이 ASP에 사용자 인증 정보를 저장하는 것보다 유리한 점은 알 수 없습니다. NET 세션. 폼 인증과 ASP.NET 세션은 모두 무결성을 확인하기 위해 해시 된 쿠키를 사용하지만 해커가 쿠키를 훔쳐서 사용자로 위장 되어도 위장 할 수는 없습니다. ASP.NET 세션에서 인증 정보를 저장하는 것보다 Forms 인증을 사용하기 때문에 보안과 관련하여 어떤 이유가 있습니까?폼 인증이 ASP.NET_session (세션 하이재킹)에 사용자 ID를 저장하는 것보다 안전합니까?
답변
커플을 모르는 :
세션 상태에 인증 정보를 저장하고 응용 프로그램 풀이 재생하면, 모든 사용자가 즉시 로그 아웃됩니다. 대조적으로 양식 인증은 양식 인증 쿠키에서 암호화 된 형식으로 필요한 정보를 보유하고 있으며 응용 프로그램 풀 재활용 상태를 유지합니다.
세션 ID는 120 비트 난수입니다. 유일한 보호는 임의성입니다. 부정 조작 방지는 없으며 실제로 해커는 작동하는 웹 사이트를 찾을 때까지 임의의 세션 ID로 웹 사이트를 계속 폴링 할 수 있습니다. 탬 퍼링 된 세션 ID를 만료 된 세션 ID와 구분할 수 없으므로 이러한 종류의 활동에 대한 침입 탐지 메커니즘은 없습니다.
양식 인증 티켓 (쿠키)은 완전히 다릅니다. 이것은 128 비트 컴퓨터 키로 암호화 된 긴 데이터 문자열로 구성됩니다. 누군가가 그것을 조작하면 단순히 해독하지 않습니다. 암호 해독 실패는 트랩 가능한 오류이며 침입 탐지 메커니즘에 참여할 수 있습니다. 티켓의 전체 카디널리티는 무차별 적으로 훨씬 더 높고 어렵습니다.
최근에 작업 한 모든 사이트에서 양식 인증 메커니즘과 ASP.NET_SessionId를 실제로 사용합니다. 또한 폼 인증 티켓에 삽입하는 내부 세션 ID (ESB 세션 식별자)도 있습니다.
인증 정보를 세션에 저장하는 대신 양식 인증을 사용하여 얻은 유일한 흥미로운 주장은 양식 인증 쿠키 (만료 날짜 등)에 더 많은 제한을 둘 수 있지만 세션 쿠키에는 사용할 수 없다는 것입니다. 따라서 사용자 환경 설정이나 세션에서 지속될 것이고 사용자가 30 분 후에 다시 로그인해야하는 경우에는 손실되지 않습니다. 그래, 차이의