코딩항해기

[JAVA] 쿠키 Cookie 본문

JAVA

[JAVA] 쿠키 Cookie

miniBcake 2024. 10. 12. 01:51

 

 

Cookie

웹 서버가 생성해 웹 브라우저로 전송하는 작은 정보 파일이다. 브라우저는 쿠키를 통해 사용자의 장치를 인식할 수 있으며 일부 데이터를 저장할 수 있다. 쿠키에는 일반적으로 만료일이 있어 정해진 기간 동안 정보를 저장할 수 있다. 이렇게 저장된 정보를 통해 사용자 경험에 맞춤화된 서비스를 제공할 수 있다.

 

저장된 쿠키는 사용자 정보, 사용자 개인 설정, 트래 등에 사용된다. 분류로는 세션 쿠키, 영구 쿠키, 인증 쿠키, 추적 쿠키, 좀비 쿠키(Evercookies), 타사 쿠키 등 다양한 종류를 가지고 있다.

 

이처럼 쿠키는 다양한 활동 및 정보를 기록하는데 사용될 수 있기 때문에 사용자 개인정보 노출의 우려가 있다. EU의 ePrivacy Directive와 같은 일부 개인정보 보호법에서는 쿠키를 사용하기 전에 사용자에게 해당 쿠키를 사용하는 방법을 안내하고 동의를 받아야한다는 지침이 있다. 단, 반드시 필요한 쿠키의 경우는 예외이다.

 

mdn 쿠키 설명 페이지

 

HTTP 쿠키 - HTTP | MDN

HTTP 쿠키(웹 쿠키, 브라우저 쿠키)는 서버가 사용자의 웹 브라우저에 전송하는 작은 데이터 조각입니다. 브라우저는 그 데이터 조각들을 저장해 놓았다가, 동일한 서버에 재 요청 시 저장된 데이

developer.mozilla.org

 

 

쿠키 생성, 조회, 삭제 예시 자료

쿠키 생성

public void createCookie(HttpServletResponse response,  String value) {
    Cookie cookie = new Cookie("생성하려는 쿠키 이름", value);
    cookie.setMaxAge(60 * 60 * 24); // 60초 60분 24시간 == 하루
    response.addCookie(cookie); //reponse에 Cookie 추가
}

 

 

쿠키 조회

public Cookie getCookie(HttpServletRequest request, String name) {
    Cookie[] cookies = request.getCookies(); //모든 쿠키 가져오기
    if (cookies != null) {
        for (Cookie cookie : cookies) {
        	String name = cookie.getName(); //쿠키 이름
            Stirng value = cookie.getValue(); //쿠키 값
            if (value.equals("찾으려는 쿠키 이름")) {
                return value; //값 반환
            }
        }
    }
    return null;
}

 

 

특정 쿠키 제거

public void deleteCookie(HttpServletResponse response) {
    Cookie cookie = new Cookie("삭제하고 싶은 쿠키 ID", null); //해당 쿠키 값을 null처리
    cookie.setMaxAge(0); //유효기간 만료
    response.addCookie(cookie); //다시 응답에 추가해 제거
}

public void deleteCookie(HttpServletResponse response, Cookie cookie) {
    cookie.setMaxAge(0); //유효기간 만료
    response.addCookie(cookie); //다시 응답에 추가해 제거
}

 

 

모든 쿠키 제거

public void deleteAllCookies(HttpServletRequest request, HttpServletResponse response) {
    Cookie[] cookies = request.getCookies(); //모든 쿠키 정보
    if (cookies != null) { //쿠키가 있다면
        for (Cookie cookie : cookies) {
            cookie.setMaxAge(0); //만료 처리
            response.addCookie(cookie); //다시 추가해 제거
        }
    }
}

 

 

참고 블로그 : https://blog.naver.com/PostView.nhn?blogId=adamdoha&logNo=222081530284