在 Spring MVC 控制器中创建的 cookie 上设置 http-only

Jan*_*ert 4 java cookies spring spring-mvc

我需要限制对包含会话令牌的 cookie 的访问,以便 javascript 无法访问它。给出的建议是在 cookie 上设置 Secure 和 HttpOnly 标志。

我在使用@ResponseBody 时遇到了没有设置 cookie 的问题,所以我在 HandlerInterceptor 中设置了 cookie。

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;
    }
Run Code Online (Sandbox Code Playgroud)

如chrome控制台所示,设置了Secure,但没有设置HTTP

显示正在设置安全标志

我已经尝试在 servlet 3.0 sepcification 下向 web.xml 添加参数,允许在会话 cookie 上设置安全和 http-only,但由于我需要自己处理会话(Spring MVC 应用程序需要保持无状态),所以赢了不适合我。

更新:

我正在使用 Tomcat7,目前使用 Servlet 2.5 和 Spring 3.2.8。

wol*_*m77 7

它可以cookie.setHttpOnly(true)像您一样进行设置以确保安全。