시큐어코딩
- home
- 보안소식
- 시큐어코딩
27. [보안 기능] 사용자의 하드디스크에 저장되는 쿠키를 통한 정보노출
2019.06.04 15:21
안녕하세요, 지에스인포입니다!
어느덧 2019년도 6월에 접어들었습니다. 날씨도 따뜻해지고 하늘도 맑아져서 야외활동을 하기 제격인 날씨가 되었는데요. 이런 날에 주변의 소중한 분들과 함께 피크닉이라도 가 보시는 건 어떨까요? ^^
이렇게 좋은 날씨 속에서 여러분들의 행복한 시간을 지켜드리기 위해 저희 정보보호 전문기업 지에스인포는 오늘도 새롭게 떠오르는 보안이슈에 늘 귀 기울이며 최선의 정보보호를 해 드리기 위해 노력하고 있답니다!
오늘은 행안부 SW 개발보안가이드 47개 항목 중 '사용자 하드디스크에 저장되는 쿠키를 통한 정보노출'에 대해 알아보겠습니다.
# 사용자 하드디스크에 저장되는 쿠키를 통한 정보노출 : 쿠키(세션 ID, 사용자 권한정보 등 중요정보)를 사용자 하드디스크에 저장함으로써 개인정보 등 기밀정보가 노출 될 수 있는 보안약점
대부분의 웹 응용프로그램에서 쿠키는 메모리에 상주하며, 브라우저의 실행이 종료되면 사라집니다. 그러나 프로그래머가 설정을 통해 쿠키를 디스크에 저장 할 수 있는데요. 이 경우 다음 브라우저 세션이 시작되었을 때 쿠키가 메모리에 로드됩니다. 이렇게 되면 개인정보, 인증정보 등의 개인정보가 영속적인 쿠키 (Persistent Cookie)에 저장된다면, 공격자는 쿠키에 접근 할 수 있는 보다 많은 기회를 가지게 되어 시스템이 취약해지는 약점이 발생합니다.
이러한 문제를 방지하기 위해서는, 쿠키의 만료시간은 해당 기능에 맞춰 최소로 설정하고 영속적인 쿠키에는 중요 정보가 포함되지 않도록 해야 하는데요, 아래 소스코드 예시와 함께 보실까요?
위의 소스코드는 쿠키의 유효기간을 1년으로 설정하여 필요보다 지나치게 긴 기간동안 쿠키를 저장하고 있습니다. 이 경우 하드디스크에 공격자가 접근 할 수 있는 기회가 크게 늘어나게 되고, 쿠키값을 통한 정보노출의 위험 가능성이 있습니다.
따라서 이처럼 쿠키의 유효기간을 하루로 짧게 설정해 주는 것이 좋답니다!
소스코드 예제를 C# 버전으로 하나 더 보실까요?
아래 소스코드는 사용자 입력값인 UserInput.Text로 전달받은 값을 통해 쿠키의 만료 시간을 지정하고 있습니다.
위와 같이 민감한 정보를 담은 쿠키를 사용할 경우, 아래와 같이 Cookie 객체의 Secure 속성을 활성화하는 것이 좋습니다.
오늘은 행정안전부 SW 개발보안가이드 중 27번째 항목인 '사용자 하드디스크에 저장되는 쿠키를 통한 정보노출'에 대해 알아보았습니다. 다음번에도 더욱 유익하고 알찬 보안소식과 함께 찾아뵙겠습니다! 감사합니다.