쿠키 개요
쿠키(Cookie)는 1994년 넷스케이프에서 처음 사용한 기술로 사용자들이 웹 사이트를 편리하게 이용할 수 있도록 하기 위한 목적으로 만들어졌음. 최근에는 많은 웹 사이트가 이 쿠키를 이용하여 사용자의 정보를 수비하고 있음
쿠키는 사용자가 인터넷 웹 사이트에 방문할 때 생기는 4KB 이하의 파일을 말함
쿠키에는 사용자와 웹 사이트를 연결해 주는 정보가 담겨 있기 때문에 나중에 클라이언트가 해당 사이트에 접속하려고 할 때 이 쿠키 내용을 이용하여 클라이언트의 신분을 알 수 있게 해줌
쿠키를 이용한 통신
1단계
사용자가 웹 사이트에 방문하면 웹 사이트는 사용자의 컴퓨터에 쿠키를 만듦. 예를 들어 사용자가 www.xxx.com에 접속하면 이 사이트는 사용자의 브라우저를 확인하는 ID 번호를 쿠키 파일에 넣어서 사용자의 컴퓨터에 저장함
2단계
사용자가 웹 서버에 접속할 때 사용자 컴퓨터에 있는 쿠키를 웹 서버로 전송하는 단계. 예를 들어 전에 방문했던 사이트에 다시 접속하면 웹 사이트는 사용자 컴퓨터에 저장된 쿠키를 통해 사용자의 여러 개인 정보를 알 수 있음
아이디와 비밀번호를 저장하여 사용하면 그 정보가 쿠키에 남아 있기 때문에 아이디와 비밀번호를 다시 입력하지 않아도 로그인 할 수 있음
쿠키의 일반적 용도
사이트 개인화
쿠키를 통해 사용자 아이디와 비밀번호 외에도 사용자의 ‘성향’까지 파악할 수 있음. 각 사용자의 성향은 쿠키에 심어놓은 정보를 통해 웹 사이트에 그대로 반영될 수 있음
장바구니 시스템
전자상거래에서 주로 사용되는 장바구니 시스템은 사용자가 물건을 고르면 그 내역이 쿠키에 저장됨
웹 사이트 이용 방식 추적
사용자의 웹 사이트 이용 방식을 제대로 파악해 놓으면 그들이 자주 방문하는 사이트에 광고 배너를 달고, 여러 가지 관련 정보도 담아 놓을 수 있음. 사용자가 많이 방문하지 않은 사이트는 폐쇄하거나 다른 방법으로 발전시킬 수도 있음
타깃 마케팅
광고를 낸 업체는 자신의 광고가 얼마나 효과를 내고 있는지 궁금해하기 때문에 광고 대행업체는 제3의 업체의 쿠키를 사용자 컴퓨터에 저장하고 사용자의 이용 정보를 수집함. 수집한 사용자 정보를 광고업체에 판매해 그들의 광고를 얼마나 많은 사람들이 보는지, 고객이 선호하는 광고는 무엇인지 알려줌
쿠키 구조
개요
쿠키는 4개의 속성과 하나의 데이터를 가지는 구조체임. 서버는 응답에 Set-Cookie 헤더를 포함하는 방식으로 쿠키를 설정함. 쿠키는 이름-값 쌍과 선택적인 애트리뷰트로 구성됨.
쿠키의 기본 구조는 Set-Cookie: name=value; expires=[Date]; domain=[Domain]; path=[Path]; [secure] 이며 값을 추가할 경우에는 세미콜론(;)을 구분자로 추가함
유효기간
쿠키가 생성되면 기본적으로 브라우저가 종료될 때까지는 쿠키의 데이터를 사용할 수 있음. 하지만 유효 기간을 지정하면 브라우저가 종료되어도 지정한 기간은 쿠키 데이터를 읽고 쓸 수 있게 됨
유효기간이 지나면 쿠키 데이터는 소멸함. 실제로 파일이 지워지지는 않더라도 데이터를 브라우저에서 읽을 수가 없음
패스
쿠키는 쿠키 데이터를 생성한 웹 페이지에서만 그 데이터를 읽을 수 있음. 하지만 Path 항목을 지정해 주면, 해당 Path 이하에서는 그 쿠키 데이터를 공유할 수 있음
도메인
도메인 속성은 패스 속성을 확장한 것임. 패스가 사이트에서 쿠키 데이터를 읽고 쓰는 권한을 설정하는 것이라면, 도메인 항목은 도메인 단위에서 쿠키 데이터를 읽고 쓰는 권한을 설정하게 됨
HTTP 쿠키 관련 보안 속성
httpOnly 속성
‘Set-Cookie 응답 헤더’에 설정하는 속성으로 클라이언트(웹 브라우저 등)에서 스크립트(자바 스크립트 등)를 통해 해당 쿠키에 접근하는 것을 차단해 주는 속성임
일반적으로 세션 ID를 저장하고 있는 세션 쿠키를 탈취하기 위한 XSS(Cross Site Script) 공격에 대응하기 위해 사용함
secure 속성
‘Set-Cookie 응답 헤더’에 설정하는 속성으로 클라이언트(웹 브라우저 등)에서 HTTPS(SSL/TLS) 통신일 경우에만 해당 쿠키를 전송하고 HTTP 통신일 경우에는 전송하지 않는 속성임
따라서 전송 구간 암호화를 통해 평문 쿠키가 전송 과정에서 노출되는 것을 방지할 수 있음. 쿠키에 대한 기밀성(Confidentiality)을 보장하기 위한 목적으로 사용함
쿠키에 관한 오해
바이러스 전파
쿠키가 위험하거나 바이러스를 전파할 것으로 생각하는 사람이 있을 수 있으나 쿠키는 텍스트 파일이므로 실행되지 않음. 바이러스는 실행이 되므로 전파되는 성질을 가지나, 쿠키는 단순히 정보를 담고 있는 텍스트 파일이므로 쿠키가 바이러스를 전파할 수는 없음
사용자 컴퓨터에 피해 입히기
쿠키에는 웹 사이트에서 만든 특정 데이터만 있을 뿐 어떠한 정보도 담겨있지 않음. 실행 파일이 아니므로 스스로 디렉터리를 읽거나 파일을 지우는 기능은 절대 수행할 수 없음
다른 웹사이트에서 읽기
쿠키는 이름, 값, 유효기간, 도메인, 경로 등으로 이루어져 있고, 쿠키는 쿠키 안에 저장된 도메인 이름을 갖고 있는 사이트에서만 유효함
쿠키 보안 취약점
XSS(Cross Site Scripting) 공격
웹 사이트를 만들기 위해서 HTML 언어로 페이지를 구성해야 함. 하지만 HTML 만으로는 정적인 페이지밖에 만들 수 없음
게시판 같은 서버와 통신을 하는 동적인 페이지를 생성하기 위해서는 서버 사이드 스크립트 언어인 PHP, JSP, ASP 등 CGI(Common Gateway Interface) 프로그램을 이용해야 함
이러한 프로그램은 웹 서버에서 실행되어, 그 결과를 사용자에게 돌려주는 역할을 함. 반대로 사용자의 컴퓨터에서 실행되는 언어인 자바 스크립트나 비주얼베이직 스크립트 등이 있음
XSS 공격은 자바스크립트가 사용자의 컴퓨터에서 실행된다는 점을 이용한 공격임. 자바스크립트에서 “document.cookie”라는 명령어는 사이트에서 쿠키값을 활용하여 다양한 서비스를 제공할 수 있도록 하는 역할을 하지만, 공격자들은 쿠키값을 유출하기 위한 목적으로 사용하기도 함
스니핑(Sniffing) 공격
쿠키가 동작하는 과정은 두 가지로 구분되지만, 두 가지 모두 클라이언트에 저장되는 쿠키값이 네트워크를 통해 전송되는 것을 알 수 있음
이때 쿠키 값을 따로 암호화하지 않고 전송한다면 네트워크 스니핑 공격을 통해 쿠키값을 탈취 할 수 있음
공용 PC에서 쿠키값 유출
쿠키 파일은 사용자의 하드디스크에 저장되며, 간단한 방법으로 접근 가능함
PC방, 전산실, 도서관 등과 같은 공용 PC를 사용하여 인터넷을 하면 자신이 사용한 정보는 고스란히 그 컴퓨터에 남게 되고, 그 뒤에 사용하는 사용자는 그 기록을 확인할 수 있게 됨
공격자는 이런 특징을 이용하여 공용 PC의 하드디스크에 저장된 쿠키 정보는 쉽게 얻어낼 수 있음
세션 개요
세션은 개별 클라이언트 상태 정보를 서버에 저장하는 기술을 말함
서버는 개별 클라이언트 세션을 식별하기 위해 ‘세션 ID(Session ID)’를 부여하고 세션 ID는 세션 쿠키(Session Cookie)를 이용하여 클라이언트와 서버 간에 주고받음
클라이언트 상태 정보를 서버에 저장하기 때문에 쿠키 방식에 비해 보안상 안전하다는 장점이 있음
만약 공격자가 정상적인 사용자의 세션 ID 정보를 탈취한다면 정상 사용자로 위장한 접근이 가능함. 이러한 공격을 HTTP 세션 하이재킹(Session ID Hijacking)이라 함
안전한 세션 ID 관리
세션 ID 생성
- 세션 ID는 안전한 서버에서 생성 후 사용되어야 함
- 세션 ID는 최소 128비트의 길이로 생성되어야 하며, 안전한 난수 알고리즘을 적용하여 예측할 수 없는 값이 사용되어야 함
세션 ID 사용
- URL Rewrite 기능을 사용하는 경우 세션 ID가 URL에 노출될 수 있으므로, 사용하지 않도록 설계해야 함
세션 ID 폐기
- 장기간 접속되어 있으면 세션 ID의 노출 위험이 커지므로, 일정 시간 주기적으로 세션 ID를 재할당하도록 설계함
'정보보안 > 시스템보안' 카테고리의 다른 글
보안 운영체제 기능 (0) | 2025.02.14 |
---|---|
보안 운영체제 개요 (0) | 2025.02.13 |
클라이언트 보안 메일 클라이언트 보안 (0) | 2025.02.11 |
클라이언트 보안 웹브라우저 보안 (0) | 2025.02.10 |
클라이언트 보안 공개 해킹 도구 (0) | 2025.02.09 |