JAVA設置HttpOnly Cookies

HttpOnly Cookies是一個cookie安全行的解決方案。java

在支持HttpOnly cookies的瀏覽器中(IE6+,FF3.0+),若是在Cookie中設置了"HttpOnly"屬性,那麼經過JavaScript腳本將沒法讀取到Cookie信息,這樣能有效的防止XSS攻擊,讓網站應用更加安全。瀏覽器

 

可是J2EE4,J2EE5 的Cookie並無提供設置 HttpOnly 屬性的方法,因此若是須要設置HttpOnly屬性須要本身來處理。安全

import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletResponse; /** * Cookie工具類 */ public class CookieUtil { /** * 設置HttpOnly Cookie * @param response HTTP響應 * @param cookie Cookie對象 * @param isHTTPOnly 是否爲HttpOnly */ public static void addCookie(HttpServletResponse response, Cookie cookie, boolean isHttpOnly) { String name = cookie.getName();//Cookie名稱 String value = cookie.getValue();//Cookie值 int maxAge = cookie.getMaxAge();//最大生存時間(毫秒,0表明刪除,-1表明與瀏覽器會話一致) String path = cookie.getPath();//路徑 String domain = cookie.getDomain();//boolean isSecure = cookie.getSecure();//是否爲安全協議信息  StringBuilder buffer = new StringBuilder(); buffer.append(name).append("=").append(value).append(";"); if (maxAge == 0) { buffer.append("Expires=Thu Jan 01 08:00:00 CST 1970;"); } else if (maxAge > 0) { buffer.append("Max-Age=").append(maxAge).append(";"); } if (domain != null) { buffer.append("domain=").append(domain).append(";"); } if (path != null) { buffer.append("path=").append(path).append(";"); } if (isSecure) { buffer.append("secure;"); } if (isHttpOnly) { buffer.append("HTTPOnly;"); } response.addHeader("Set-Cookie", buffer.toString()); } }

 

值得一提的是,Java EE 6.0 中 Cookie已經能夠設置HttpOnly了,因此若是是兼容 Java EE 6.0 的容器(例如如 Tomcat 7),能夠直接使用Cookie.setHttpOnly 的方法來設置HttpOnly: cookie

cookie.setHttpOnly(true);
相關文章
相關標籤/搜索