2013-07-09 6 views
6

다소 큰 ASP.NET 웹 응용 프로그램 (C#)에서 여러 가지 보안 문제를 해결하려고합니다. 세션 고정 공격을 방지하기 위해 사용자가 인증 할 때마다 새로운 세션 ID를 생성하고 싶습니다. 그러나 나는 세션의 나머지 부분을 잃지 않고 새로운 세션 ID 만 생성하려고합니다.로그인시 새 SessionID 생성 (ASP.NET)

해결 방법 1 : Generating new SessionId in ASP.NET
이 빈 문자열로 설정하여 수동으로 세션 쿠키를 삭제 제안이 주제에 대한 몇 가지 연구를하고 후에 나는 작업 솔루션의 몇 가지를 발견했다. 그러나이 경우 페이지를 새로 고치거나 AJAX를 사용하여 실제로 쿠키를 제거해야합니다. 이는 내 구체적인 경우 실제로 실행 가능한 옵션이 아닙니다.

해결 방법 2 : Generating a new ASP.NET session in the current HTTPContext
나는이 방법을 구현하고 예상대로 작동합니다. 그러나 원래의 포스터가 말했듯이 이것은 당신이 우아한 해결책이라고 부르는 것이 아닙니다. 또한,이 게시물은 내가 거기에 더 나은 해결책이 요즘있을 수 있기를 바래 몇 년 전입니다.

내가 알고 싶은 것은 내 연구에서 빠뜨린 해결책이 있거나 세션 관리 내부를 조작하지 않고도 해결책 2와 같은 것이 가능한 경우입니다.

+1

나는 당신과 AFAIK와 같은 문제가있다. solution2는 본질적으로 solution1과 같았고, 둘 다 현재 httpcontext에 대한 새로운 sessionid를 재생성하려고 시도하고있다. 마침내 나는이 링크를 발견했다. http://stackoverflow.com/questions/5502435/regenerate-sessionid-in-asp-net. 이것에 접근하는 훨씬 더 간단한 방법입니다. – pinopino

+0

마지막으로, 문제를 해결할 수있는 방법이 있습니까? 아니면 너 스스로 해결 했니? 모두가 더 많은 지식을 얻을 수 있도록 솔루션을 공유하십시오. XD –

답변

4

ASP.NET에서 세션 관리가 작동하는 방식 (솔루션 번호 2)으로 인해 원하는 것을 달성하기가 쉽지 않습니다. 해결책 (2)은 ASP.NET 세션 상태 구현 세부 사항이 어떤 점에서.

사용자가 인증 할 때 세션의 관련 데이터를 db/cache에 저장하고 사용자를위한 새 세션을 만든 다음 필요한 데이터로 채울 솔루션 1을 추천합니다. 데이터가 "인증되지 않은"세션에서 "인증 된"세션으로 이동하기 때문에 데이터의 유효성을 검사해야합니다.

세션 쿠키를 수동으로 지우는 것은 미끄러운 경사 일 수 있습니다. 다시 Ramping up ASP.NET session security입니다. NWebsec.SessionSecurity의 인증 된 세션 식별자에서 더 강력한 솔루션을 찾을 수 있습니다 (면책 조항 : 저는 해당 프로젝트의 개발자입니다).

0

있는 Web.Config가

Response.Cookies.Add 물품 IsPostBack을! 블록 Login.aspx 페이지에서 sessionState의 cookieName = "ABC"

변경 (신규의 HttpCookie ("ABC", "")) ;

즐기기

절약 시간이 좋습니다!

+0

당신은이 접근법을 상세히 설명 할 수 있습니까? 이 작품을 만드는 이유는 무엇입니까? – Kristopher

+0

이상 적으로, 로그인 한 직후에 주어진 이름으로 새 세션 ID를 생성합니다. 크롬 개발자 도구의 리소스 탭 쿠키를 체크인 할 수 있습니다. 따라서 해커가 동일한 구역을 다시 사용하는 것을 어렵게 만듭니다. –