본문 바로가기

웹프로그램

쿠키의 기본 개념


[원문] http://www.microsoft.com/Korea/MSDN/columns/Contents/ASPdotNET/vbtchASPNETCookies101/

위 원문에 Cookie는 너무 자주 사용하는것이라 쉽게 지나칠 수 있는 부분들이 잘 명시되어 있습니다.
아래 내용은 원문의 일부를 정리한 내용이오니 정확한 정보를 알기 위해서는 꼭 위의 원문을 보시기 바랍니다.

위 원문에서 중요한(?) 몇가지 요소들을 살펴보면
1. 대부분의 브라우저는 최대 4096바이트의 쿠키를 지원 (길이의 제약사항)
2. 대부분의 브라우저에서는 사이트마다 20개의 쿠키를 허용합니다.
    쿠키를 더 많이 저장하려고 하면 가장 오래된 쿠키가 삭제됩니다.
    일부 브라우저는 연결된 모든 사이트에서 허용하는 쿠키 수를 일반적으로 300개로 제한합니다.
    (갯수의 제약사항)
3. 쿠키에 Path를 설정할 경우
    Internet Explorer와 Mozilla 브라우저를 테스트한 결과 경로가 대/소문자를 구분하는 것이 좋습니다.
   일반적으로 Windows 서버의 URL은 대/소문자를 구분하지 않지만 이 경우 예외입니다.
   사용자가 자신의 브라우저에 URL을 입력하는 방법을 제어할 수 없지만 응용 프로그램이 특정 경로에 연결된 쿠키에
   의존할 경우 만든 하이퍼링크의 URL이 Path 속성 값의 대/소문자와 일치하는지 확인하십시오.
   (URL 대소문자의 구분 제약사항)
4. 쿠키 작업을 하는 경우 쿠키의 본질적인 보안상 취약성을 알고 있어야 합니다.
   즉, 쿠키에 사용자 이름, 암호, 신용 카드 번호와 같은 중요한 정보는 저장하지 말아야 합니다. 쿠키를 도용할 수 있는 사람이나 사용자가
   보지 말아야  할 정보는 쿠키에 두지 마십시오. 쿠키에서 얻은 정보를 의심하십시오.
   마찬가지로 데이터가 처음 작성될 때와 같은 상태라고 가정하지 마십시오.
   사용자가 웹 페이지에 입력한 데이터가 있는 쿠키 값으로 작업할 때와 같은 보안을 사용하십시오.
   예를 들어, 페이지에 값을 표시하기 전에 쿠키의 콘텐트에 HTML 인코딩을 적용합니다. 
   (html이나 자바스크립트로 악의적인 코드실행 방지를 위해)
   이 방법은 사용자에게서 정보를 얻은 후에 표시하는 정보를 선별하는 표준 방법이며 쿠키 작업 방법과 다르지 않습니다.
   .NET일 경우 => Server.HtmlEncode(Request.Cookies("userInfo")("userName"))
   (보안취약사항)
등등 중요정보들이 있습니다.
 
비록 이 해당페이지는 .NET으로 설명되어 있지만 다른 언어에도 모두 해당되는 사항입니다.

크리에이티브 커먼즈 라이선스
Creative Commons License