2011-11-29 3 views
1

세션 하이재킹에 대한 기사는 거의 읽지 않았습니다. 해커가 쿠키를 스니핑하고 거기에서 세션 ID를 가져옵니다. 하지만 세션 ID는 암호화 된 값으로 쿠키에 저장된다고 생각합니다. 안 그래? 쉽게 해독 할 수 있습니까?ASP.NET의 세션 하이재킹 및 보호와 관련하여

다른 중요한 데이터가 세션 쿠키에 저장됩니다 ... 설명해주십시오. 세션 쿠키에 저장되어있는 서버 측 코드에서 세션 변수에 저장 한 내용은 ... 맞습니까?

세션 쿠키와 세션 하이재킹을 보호하는 가장 좋은 방법은 무엇입니까? 덕분에

답변

1

아이디어는 세션 쿠키를 가져 와서 그대로 사용하여 서버에 보내고 서버가 쿠키를 피해자 세션에 연결하는 것입니다. 실제로 세션 쿠키에 대한 데이터는 없으며 암호화 된 세션 ID 만 있습니다.

이제 민감한 데이터가 쿠키에 저장되며 currenct 사용자의 역할 인 경우가 있습니다. web.config에서 해독과 변경을 피하려면 <roleManager cacheRolesInCookie="false"

또한 인증 쿠키와 역할 관리자에서 requireSSL = "true"를 사용하므로 인증 쿠키를 훔칠 수는 없지만 보안 쿠키를 사용해야합니다 이 작업을위한 페이지

일부 사용자는 중요한 세션을 훔칠 수 있습니다. 이것은 프로그래머가 사용자에게 보여주는 중요한 데이터를 세션 ID에 의존하는 경우에 수행 할 수 있습니다. 예를 들어 전화 번호와 이름을 세션 변수에 저장하고이를 사용자에게 표시하면 일부 사용자가 전체 웹 페이지를 훔쳐 읽을 수 있습니다 (SSL이 아닌 경우). 백 오피스와 숨겨진 관리 페이지에 대한 액세스를 세션 ID로 연결 한 경우 세션 쿠키를 훔쳐서 페이지를 열면 관리자에게 백 오피스 페이지를 가져올 수 있습니다.

중요한 정보를 세션 데이터에 저장하지 말고 항상 ssl 페이지를 사용하여 쿠키 중요 데이터를 관리하고 보내십시오.

이제 해커가 세션 쿠키를 훔쳐서 사용자가 이전 페이지에 표시 한 내용을 저장하면 아마존과 같은 제품의 기록은 사용자와 연결될 수 없으므로 큰 문제가되지 않습니다. 누군가는 사용자가 보는 URL을 냄새 맡는다.

물론 암호화되지 않은 쿠키에 중요한 데이터를 저장하지 않아도됩니다.

중요한 데이터가 아닌 중요한 데이터로 분할하고 중요한 페이지와 쿠키에 항상 SSL을 사용하고 안전하지 않은 페이지에서 오는 데이터를 신뢰하지 마십시오.

당신은 또한 읽을 수 있습니다 : Can some hacker steal the cookie from a user and login with that name on a web site? 희망이 당신을 돕는다.

1

ASP.NET 쿠키는 Session IDAuthorization Ticket을 저장합니다. 그러나 문제는 쿠키를 해독 할 수 있는지 여부가 아니라 동일한 값으로 쿠키를 생성하고 원래 쿠키의 ​​복사본이 실제 쿠키라고 생각하도록 서버를 속일 수 있는지 여부입니다.

HTTP 프로토콜은 stateless이므로 클라이언트와 서버는 서로에 대한 정보를 유지 관리하지 않습니다. 세션 쿠키 (세션 ID 및 권한 부여 티켓 사용)는 서로를 추적하는 방법입니다. 웹 서버는 어떤 세션 ID가 어떤 권한 부여 티켓에 연결되어 있는지를 알고 있으며, 유효한 값 쌍을 제공 할 수 있다면 웹 서버는 그것을 행복하게 받아 들일 것입니다.웹 서버는 대칭 암호화 알고리즘과 자동 생성 키 (기본 설정)를 사용하여 쿠키를 암호화합니다. 원하는 경우 machine.config 파일의 해당 섹션을 수정하여 이러한 설정을 조정할 수 있습니다.