복붙노트

[SPRING] Spring MVC Controller에서 생성 된 쿠키에 http-only 설정

SPRING

Spring MVC Controller에서 생성 된 쿠키에 http-only 설정

자바 스크립트가 액세스 할 수 없도록 세션 토큰을 포함하는 쿠키에 대한 액세스를 제한해야합니다. 주어진 권고는 쿠키에 보안 플래그와 HttpOnly 플래그를 설정하는 것입니다.

@ResponseBody를 사용할 때 쿠키가 설정되지 않고 문제가 발생하여 HandlerInterceptor 내부에 쿠키를 설정하고 있습니다.

public class COOKIEFilter implements org.springframework.web.servlet.HandlerInterceptor  {

    @Override
    public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {

        Cookie cookie = new Cookie("timestamp", new Long(new Date().getTime()).toString());
        cookie.setSecure(true);
        // how do I set the http-only flag?
        httpServletResponse.addCookie(cookie);

        return true;
    }

크롬 콘솔에 표시된 것처럼 보안은 설정되지만 HTTP는 설정되지 않습니다.

세션 쿠키를 설정할 수있는 보안 및 HTTP 전용 서블릿 3.0 sepcification 아래에 web.xml 매개 변수를 추가하려고했지만 세션을 직접 처리해야하므로 (스프링 MVC 응용 프로그램은 상태 비 저장해야 함) 나를 위해 일하지 마라.

최신 정보:

저는 Tomcat7을 사용하고 있습니다. 현재 Servlet 2.5와 Spring 3.2.8이 있습니다.

해결법

  1. ==============================

    1.보안 설정과 마찬가지로 cookie.setHttpOnly (true)로 설정할 수 있습니다.

    보안 설정과 마찬가지로 cookie.setHttpOnly (true)로 설정할 수 있습니다.

  2. ==============================

    2.다음과 같이 HttpOnly를 설정해야합니다.

    다음과 같이 HttpOnly를 설정해야합니다.

    Cookie cookie = new Cookie("timestamp", new Long(new Date().getTime()).toString() + ";HttpOnly");
    

    그것은 cookieName = cookieValue; HttpOnly; 보안 형식을 따라야합니다.

  3. ==============================

    3.바꾸다:

    바꾸다:

     Cookie cookie = new Cookie("timestamp", new Long(new Date().getTime()).toString());
    

    다음과

    Cookie cookie = new Cookie("timestamp", new Long(new Date().getTime()).toString()+";HttpOnly");
    

    이것은 효과가있을 수 있습니다.

  4. from https://stackoverflow.com/questions/29406002/set-http-only-on-cookies-created-in-spring-mvc-controller by cc-by-sa and MIT license