OVERCODE

쿠키(Cookie)와 세션(Session) 본문

HTML/CSS/JS

쿠키(Cookie)와 세션(Session)

오버코드 2016. 1. 13. 02:34

쿠키(Cookie)란 무엇인가?


쿠키는 사용자 컴퓨터(Client)의 브라우저에 저장된 작은 조각이다.

일반적으로 쿠키는 인증을 하는데 사용된다.

또한 사이트 환경 설정, 쇼핑 카트 항목 및 서버 세션 식별에 대한 쿠키값을 저장하기도 한다.


접속된 URL과 같은 URL 에서 저장했던 쿠키만 사용가능하다. (www.example.com 의 쿠키는 www.example22.com 에서 사용불가)


쿠키는 웹 사이트 또는 웹 어플리케이션과 사용자 간의 상호작용을 위한 정보를 저장하는 좋은 방법이다.

다만 쿠키는 사용자의 컴퓨터에 텍스트로 저장된 파일로 세션에 비해 보안에 취약하다.

만약 로그인할때 아이디와 비밀번호를 쿠키에 저장하는 방식이라면 해당 정보가 컴퓨터에 저장되어 해킹 등에 악용될수도 있다.


하지만 클라이언트상에서 동작하기 때문에 서버부하도 낮은 장점은 있다.



세션(Session)이란 무엇인가?


세션은 사용자가 웹 서버에 접속해 있는 상태를 말한다. 사용자가 브라우저를 열어 서버에 접속한뒤 접속을 끊을(브라우저를 종료) 시점까지를 세션이라고 한다.

서버와 접속이 종료되면 접속했던 PC에는 정보가 남지않게되며, 서버에서는 자동으로 세션을 삭제하기도 한다.


세션은 정보를 서버에 저장한다. 따라서 보안면에서 쿠키보다 우수하다.



쿠키(Cookie)와 세션(Session)의 차이점?


쿠키는 정보를 클라이언트에 저장하고 세션은 정보를 서버에 저장한다는것이 가장 핵심적인 차이점이다.



그러면 보안이 뛰어난 세션(Session)만 쓰면 되지않을까?


세션이 서버에 저장되어 메모리를 차지하기 때문에 많은 세션이 쌓이게 되면 서버에 부하를 준다.

하지만 쿠키는 접속한 사람의 PC에서 바로 작동하기 때문에 속도도 빠르고 서버에 부하를 전혀 주지않는다.


그래서 로그인과 같이 보안상 중요한 작업은 세션을 이용하고, 보안과 관련없는 쇼핑 카트나 팝업 등에는 쿠키를 사용하는 것이다.

상황에 따라 적절히 사용하면 되겠다.



쿠키(Cookie) 관련 자바스크립트(Javascript) 함수


function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + "; " + expires;
}

function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1);
        if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
    }
    return "";
}

function checkCookie() {
    var user = getCookie("username");
    if (user != "") {
        alert("Welcome again " + user);
    } else {
        user = prompt("Please enter your name:", "");
        if (user != "" && user != null) {
            setCookie("username", user, 365);
        }
    }
}

Comments