사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출
정의
개인정보, 인증 정보 등이 영속적인 쿠키(Persistent Cookie)에 저장된다면, 공격자는 쿠키에 접근할 수 있는 보다 많은 기회를 가지게 되며, 이는 시스템을 취약하게 만든다.
안전한 코딩기법
쿠키의 만료시간은 세션 지속 시간을 고려하여 최소한으로 설정하고 영속적인 쿠키에는 중요 정보(사용자 권한 등급, 세션 ID 등)가 포함되지 않도록 한다.
코드예제
다음은 안전하지 않은 코드예제로, 쿠키 만료시간을 과도하게 길게 설정하여 사용자 하드 디스크에 저장된 쿠키가 도용되는 상황을 보여주는 코드입니다.
#사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출(안전X)
def remind_user_state_bad(request):
res = HttpResponse()
res.set_cookie('remember', 1, max_age=60*60*24*365)
return res
다음은 안전한 코드예제로, 만료 시간은 해당 기능에 맞춰 최소로 설정하고 영속적인 쿠키에는 중요 정보가 포함되지 않도록 해야 합니다.
#사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출(안전O)
def remind_user_state_good(request):
res = HttpResponse()
res.set_cookie('remember', 1, max_age=60*60, secure=True, httponly=True)
return res
보안기능/사용자 하드디스크에 저장되는 쿠키를 통한 정보 노출
[참고문헌] Python 시큐어코딩 가이드(2022) / KISA(한국인터넷진흥원)