쿠키 보안성
쿠키는 쿠키를 생성한 서버 또는 쿠키를 받도록 허용된 서버로만 전송됩니다. 이를 위해 서버가 쿠키를 설정할 때에는 그 쿠키가 전송되는 서버의 범위를 제한하게 됩니다.
그러나 쿠키는 각 페이지간 상태 유지를 위해 설계된 것이지 사용자 인증과 같은 애플리케이션을 위해 설계된 것이 아니기 때문에 회원인증 정보 또는 주민등록번호, 카드번호와 같은 사용자 정보를 쿠키에 저장하는 것은 매우 위험한 것 같습니다. 쿠키 파일은 로컬시스템을 사용하는 누구나 접근할 수 있습니다. 파일에 저장되지 않은 상태에서도 원서버(original server)을 가장한 스푸핑 서버(spoofing server)에 의해 쿠키의 내용이 수정될 수도 있다고 합니다. 아래에는 쿠키 보안에 관련된 문서를 링크시켜 놓았으니 쿠키를 이용하기 전에 충분히 살펴보시기 바랍니다.
쿠키 보안에 관련된 자료
  • 쿠키와 프라이버시
    목차 : 프롤로그/여러분의 쿠키는 안녕하신가?/쿠키는 왜 만들었나?/쿠키는 믿을만한가?/해결방법은 없나?
  • Cookie sniffing
    목차 : 개요/현황/취약점 발생원인/해킹 기법/모의 실험/보안 권고
  • 국내 인터넷 서비스 제공업체 보안 취약성 분석 보고서
    목차 : 개요/현황/웹 인증 방식 소개/모의 구축 모델/사례연구(취약점 분석)/실제 모의 사례/보안 권고/취약점 분석(CASE TEST)/결론/관련자료
  • 악성코드에 의한 HTTP Cookie 유출 문제점 및 대책
    목차 : 설명/해결책
  • 쿠키 및 세션을 이용한 인증의 보안 취약성 경고
    목차 : 들어가기에 앞서/PHP에서 쿠키를 이용한 인증의 위험 (PHP에서 GET 방식을 이용한 쿠키 스푸핑)/헤더 조작을 통한 cookie spoofing/쿠키 변수 이름 알아내기/쿠키 인증에 대한 다른 아이디어들/Cookie 인증의 대안, Session/Session spoofing/Session sniffing/Session의 한계를 넘어/글을 마치며
(수정:2010.1.11) 관련정보에 대한 홈페이지 링크가 너무 오래되어 연결되지 않아 삭제합니다.
쿠키 보안 대책
위에서 링크한 자료들을 종합하여 보면 웹사이트 개발자나 사용자가 쿠키를 사용할 때는 아래와 같은 점에 유념하시는 것이 바람직할 것 같습니다. 위에 링크된 자료를 살펴보면 "쿠키 기반의 회원 인증 시스템"을 모델링해 놓은 예제가 있으니 이 부분도 꼭 살펴보시기 바랍니다.
쿠키인증 기법을 사용하는 사이트의 보안대책
① http://www.netscape.com/newsref/std/cookie_spec.html 사이트의 쿠키 스팩을 따릅니다. 특히, 쿠키 저장시 타인이 임의로 쿠키를 읽어들일 수 없도록 도메인과 경로 지정에 유의합니다. 쿠키들은 쿠키를 받도록 허용된 서버로만 전송됩니다. 서버가 쿠키를 설정할 때 도메인을 지정하면 그 쿠키가 전송되는 서버의 범위를 제한할 수 있습니다. 경로 설정값을 이용하면 쿠키가 전송되는 서버를 제한할 수 있을 뿐만아니라 서버 내의 경로를 제한할 수도 있습니다. 쿠키의 경로를 지정하면 지정된 경로 및 그 하위 경로에 있는 웹문서로만 쿠키가 전달됩니다. 쿠키의 경로를 "/"로 지정하면 해당 서버의 모든 경로에 대하여 쿠키를 전달하기 때문에 가능하면 "/"를 지정하지 말고 특정 디렉토리를 지정하여 사용하기 바랍니다.
② 쿠키에 들어가는 정보는 가능하면 암호화하여 저장합니다. 만약 패스워드 부분을 사용하게 된다면 반드시 암호화하여 저장합니다.
③ 가능하면 쿠키에 지정하는 값을 최소화합니다. 쿠키 정보만 가지고도 개인 정보를 알 수 있는 부분은 피합니다.
④ 개인 정보 열람 및 수정 페이지는 패스워드나 유일한 사용자의 정보를 재입력해야만 들어갈 수 있게 구축합니다. 만약 도용을 당하더라도 개인 패스워드 등 사용자 정보를 입력하게 함으로써 개인의 정보 열람 및 수정을 불가능하게 합니다.
⑤ 도메인과 경로지정에 따라 차이가 있을 수 있으나 대부분 쿠키 정보는 그것을 제공한 사이트에서만 검색할 수 있으므로 검증되지 않은 사용자용 홈페이지는 인증서버와 다른 도메인에 위치시킴으로써 쿠키정보의 유출을 막을 수 있습니다. 즉, 홈페이지 보안을 위해 사용자용 홈페이지는 별도의 도메인으로 서비스합니다.
⑥ 웹메일 보안을 위해 수신된 웹메일의 본문에 첨부되는 HTML 가능 자료의 스크립트 검사를 하거나, 첨부되는 자료는 다른 도메인 사용을 권장합니다.
⑦ 게시판 제목, 본문에는 스크립트 언어의 사용을 금지시키도록 합니다.
⑧ 일반 사용자가 업로드할 수 있는 컨텐츠 부분에는 쿠키 사용을 억제합니다.
⑨ 개인 정보 열람이 가능한 도메인은 분리하거나 인증 서버를 달리합니다.
일반 사용자들의 보안대책
쿠키를 전혀 사용하지 못하도록 브라우저를 설정하면 쿠키 보안을 걱정할 필요가 없겠지만 많은 웹사이트가 쿠키를 전제로 작성되어 있는 현실에서 이는 받아들이기 어려울 것입니다. 쿠키를 사용한다는 것을 전제로 보안 대책을 살펴보면 아래와 같습니다.
① 웹메일 서비스 옵션에서 '자바스크립트 허용여부' 등을 선택할 수 있다면 허용하지 않는 것으로 설정합니다.
② 로그인한 상태로 타인의 홈페이지를 방문하지 않습니다.
③ 쿠키를 받아들이기 전에 주의를 촉구하도록 세팅할 수 있습니다. 그러나 매번 쿠키를 받을 때마다 이에 응답한다는 것은 웹서핑하는데 많은 불편을 가져오게 될 것입니다.
④ 쿠키는 받아들이되 민감한 정보는 결코 입력하지 않습니다. 주민등록번호, 신용카드번호를 입력받는 페이지가 이러한 정보를 쿠키에 저장할 수도 있습니다. 그러니 이러한 정보는 어떠한 경우에도(?) 입력하지 않는 것이 좋겠지요.
대안으로서의 세션
쿠키를 이용한 인증은 어떠한 경우에도 완벽하지 않기 때문에 중요한 정보는 서버에 저장하고 쿠키와 서버의 정보를 비교하여 사용자 인증을 수행하는 것이 좋습니다. 그러나 이러한 방식으로 동작하는 세션의 경우도 주의를 기울이지 않으면 항상 문제가 될 수 있습니다. "쿠키 및 세션을 이용한 인증의 보안 취약성 경고" 문서를 참조바랍니다.
쿠키의 위험성
쿠키에 담긴 내용(신용카드번호와 같은)때문에 쿠키의 위험성을 논하는 것이지 단순한 텍스트 문서로 되어 있는 쿠키가 여러분의 로컬시스템에 바이러스를 심거나 하드디스크를 날려버리지도 않습니다. 단지 그 정보를 서버로 전송할 수 있을 뿐입니다.
PC방에서와 같이 여러사람이 같이 사용하는 로컬시스템에서는 이전 사람이 쿠키에 저장된 정보를 완벽하게 삭제하지 못하면 다음 사람이 이전 사람의 쿠키 정보를 볼 수도 있고, 앞사람과 동일 웹사이트를 접속할 때는 앞사람이 로그인한 상태에서 회원 페이지를 그대로(새로이 로그인 없이도) 볼 수 있으며, 사용자 정보를 브라우저에 그대로 보여 줄 수 있습니다.
쿠키 관리
쿠키는 웹을 좀 더 편리하게 사용할 수 있도록 해주기는 하지만 여러 사람이 같이 사용하는 로컬시스템이 경우에는 있을 지도 모르는 개인 정보를 담고 있는 쿠키를 적절히 관리하는 것은 중요할 것입니다. 쿠키 기반의 웹페이지를 서핑한 후에는 이러한 쿠키 파일을 직접 지울 수도 있고 아니면 쿠키를 관리해 주는 소프트웨어를 이용하여 지울 수도 있습니다.
직접 쿠키 파일을 지우는 방법
웹브라우저에서는 쿠키를 지울 수 있는 기능을 제공하지 않기 때문에 쿠키 파일을 직접 찾아 지워야 합니다. 자세한 것은 다음장 "브라우저 설정"을 참조바랍니다.
쿠키 관리 소프트웨어
직접 쿠키 파일을 지우는 방법은 불편합니다. 쿠키 관리 소프트웨어를 사용하면 저장된 쿠키를 읽고, 삭제하는 작업을 손쉽게 할 수 있으며 웹사이트에 따라 쿠키를 선택적으로 허용할 수 있습니다.
  • Complete Cleanup
    설명 : 하드디스크에 저장된 쿠키, 캐시 등을 지워주는 유틸리티입니다.
  • Cookie Cruncher
    설명 : 쿠키 크런처는 자신의 PC에 내장돼 있는 인터넷 쿠키를 모두 찾아주고, 텍스트 파일 형태로 내역을 볼 수 있고, 삭제할 수 있습니다.
  • Cookie Pal
    설명 : 쿠키 정보를 이용하는 웹사이트를 미리 지정해 접속과 함께 자동으로 쿠키를 차단하거나 읽어들이도록 하는 옵션 기능을 갖고 있습니다.
  • IEClean
    설명 : IE가 숨김파일(히든파일)로 지정해 놓고 있는 히스토리 폴더와 쿠키 폴더, 캐시 폴더의 파일들을 찾아서 보여 주며 삭제할 수 있습니다.
  • NSClean
    설명 : NS가 숨김파일(히든파일)로 지정해 놓고 있는 히스토리 폴더와 쿠키 폴더, 캐시 폴더의 파일들을 찾아서 보여 주며 삭제할 수 있습니다.
  • Cookie Crusher
    설명 : 웹 사이트에 따라 쿠키를 받아들이거나 거부하는 것을 도와주는 도구입니다.
  • Cache and Cookie Washer
    설명 : 쿠키 뿐만 아니라 캐시, 히스토리, Drop Down Address Bar, Auto Complete Data forms 등 인터넷을 사용하면서 생긴 모든 흔적을 찾아서 지워주는 도구입니다.
(수정:2010.1.11) 관련정보에 대한 홈페이지 링크가 너무 오래되어 연결되지 않아 삭제합니다.

'phpsource > 캐시&세션&쿠키' 카테고리의 다른 글

{쿠커}5.쿠키 규격  (0) 2001.02.20
{쿠커}4.브라우저 설정  (0) 2001.02.20
{쿠커}2.웹페이지 상태유지  (0) 2001.02.20
{쿠커}1.쿠키란?  (0) 2001.02.20
{세션핸들러}3.업그레이드 및 패치  (0) 2001.02.02
Posted by 방글24