java过滤器给Cookie加上HttpOnly属性

java过滤器给Cookie加上HttpOnly属性

网上撸下来的代码登录不了…

公司安全扫描出的漏洞之一,看到的第一步就是各种百度,但是简单复制粘贴过来的代码连登录都登录不上了… 尴尬;然后发现貌似cookie的Name和value没有对应上,需要改一点点…
而且原代码的doFilter(request, response)在cookies!=null里边的,导致wsdl接口全部调不通…

直接贴代码片


    /**
     * 执行过滤,设定cookie为HttpOnly
     */
    public void doFilter(ServletRequest request, ServletResponse response,
       FilterChain filterChain) throws IOException, ServletException {
       // TODO Auto-generated method stub
       //转为HttpServletResponse来addHeader
       HttpServletRequest req = (HttpServletRequest) request; 
       HttpServletResponse resp = (HttpServletResponse) response;
       Cookie[] cookies = req.getCookies();
       if(cookies!=null){
           for(Cookie cookie : cookies){
               StringBuilder builder = new StringBuilder(); 
               /*将cookie拼凑起来,网上那一步不能登录,是name写死了...*/
               builder.append(cookie.getName() +"=" + cookie.getValue() + "; "); 
               builder.append("Secure; "); 
               builder.append("HttpOnly; "); 
               Calendar cal = Calendar.getInstance(); 
               cal.add(Calendar.HOUR, 1); 
               Date date = cal.getTime(); 
               Locale locale = Locale.CHINA; 
               SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss",locale); 
               builder.append("Expires=" + sdf.format(date)); 
               //System.out.println("Set-Cookie="+builder.toString());
               resp.addHeader("Set-Cookie", builder.toString());
           }
      }
      //这个要写在外面,不然没有cookies的请求会传不过去
      filterChain.doFilter(request, response);
    }

希望安全扫描改的东西能全部通过啊…
小白无力…

后续

这个过滤器真是坑啊,在老ie6下面登录不上… 后台会set-cookie,过滤器也会set-cookie一次,2个值还不一样… 结果就是GG了… 不知道为什么360的兼容模式和其他浏览器还是可以的…
暂时先加了个header提高兼容性。
resp.setHeader(“P3P”,“CP=CAO PSA OUR”);
把"JSESSIONID".equals(cookie.getName())的剔出来单独处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值