java - 在 Spring MVC Controller 中创建的 cookie 上设置 http-only

标签 java spring spring-mvc cookies

我需要限制对包含 session token 的 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;
    }

如 chrome 控制台所示,已设置 Secure,但未设置 HTTP

Showing that secure flag is being set

我已经尝试在 servlet 3.0 sepcification 下向 web.xml 添加参数,允许在 session cookie 上设置安全和 http-only,但是因为我需要自己处理 session (Spring MVC 应用程序需要保持无状态) ,那对我不起作用。

更新:

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

最佳答案

它可以设置为 cookie.setHttpOnly(true) 就像您为安全所做的那样。

关于java - 在 Spring MVC Controller 中创建的 cookie 上设置 http-only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29406002/

相关文章:

spring-mvc - Spring Security+MVC注解非法参数异常

java - 设置和读取多维数组

spring - 如何在多 HttpSecurity 情况下返回 http 状态代码而不是登录页面

java - 使用 Jackson 处理 @RequestBody 中的 Null 和 Default 值

java - 如何在 Spring Boot 中手动引导测试(不使用 @SpringBootTest-Annotation)

java - 使用ajax向服务器发送数据

java - 在 Java 中对集合进行连接和分离的最佳方法

java - 什么相当于hadoop 2.7.1中的hadoop-core-xxx.jar

Java 加密框架/工具包

java - Spring data JPA Join 中的错误 - 一对多关联