본문 바로가기

웹 보안

[웹 보안] 세션 하이잭킹

세션 하이잭킹이란?

일반적으로 서버는 로그인을 성공한 유저에게 세션id 혹은 토큰을 발급하게 되며 쿠키에 저장을 합니다.

공격자가 인증을 마친 사용자의 세션 ID를 탈취하면 서버는 공격자를 정당한 사용자라고 인식하게 됩니다.

 

대표적인 공격 방법

1. 네트워크 스니핑

공격자가 공공 wifi와 같은 안전하지 않은 네트워크에서 패킷을 캡쳐하여 세션 ID를 추출할 수 있습니다.

 

2. XSS 공격

사용자의 브라우저에서 세션 쿠키를 탈취하는 것입니다.

자세한 내용은 여기를 클릭해주세요.

 

3. 세션 고정 공격

사용자가 로그인하기 전 공격자가 미리 설정한 세션 ID를 사용하게 만들고 사용자가 로그인을 한 후에도 그 세션이 유지되도록 세션을 탈취하는 방법입니다.

 

 

예방 방법

1. HTTPS 사용

모든 통신을 암호화하여 공공 WIFI와 같이 취약한 네트워크에서 안전하게 통신을 하는 방법입니다.

 

2. 세션 ID 보안성 높이기

  • 세션 ID 길이 증가
  • 랜덤하게 생성하기
  • 예측을 불가능하게 생성하기
  • 정기적으로 세션ID 재생성하기
  • 로그인 시 새로운 세션 ID 발급하기

3. 쿠키 보안 설정하기

HttpOnly 플래그 설정을 통해 js로 접근이 불가능하게 설정하는 방법입니다.

 

4. SameSite 속성 설정하기

해당 속성을 설정했을 시 A사이트에서 로그인을 성공한 후 B사이트에 요청을 보냈을 때 A사이트에서 발급한 쿠키 값들이 전송되지 않게 하는 속성입니다. 해당 설정은 CSRF 공격을 크게 줄일 수 있는 효과적인 방법입니다.

  • Strict : 완전 엄격 모드. 다른 사이트에서 오는 모든 요청에 대해 쿠키를 전송하지 않습니다.
  • Lax : 느슨한 모드. 일부 안전한 요청(GET, HEAD 등)에서는 쿠키를 전송하지만, 위험한 요청(POST 등)에는 전송하지 않습니다.
  • None : 모든 상황에서 쿠키를 전송합니다. 단, Secure 속성(HTTPS)이 함께 설정되어야 합니다.

5. 세션 타임아웃 설정

너무 긴 세션 유효 시간은 공격자에게 더 많은 기회를 제공할 수 있기에 적절한 세션 유효 시간을 설정해야합니다.

 

6. 사용자 상호작용

중요한 작업을 수행할 때는 재인증을 요구하는 것이 좋습니다.

 

 

'웹 보안' 카테고리의 다른 글

[웹 보안] 파일 업로드 취약점  (1) 2025.04.30
[웹 보안] CSRF  (1) 2025.04.28
[웹 보안] XSS  (1) 2025.04.23
[웹 보안] SQL 인젝션  (0) 2025.04.21