1. 程式人生 > >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())的剔出來單獨處理。