HttpOnly Cookies是cookie安全线的解决方案。
在支持HttpOnly Cookies的浏览器(IE6,FF3.0 )中,如果将Cookie设置为“HttpOnly”属性,则JavaScript脚本将无法读取Cookie信息,从而有效防止XSS攻击,并防止sasa
但是,J2EE4和J2EE5cookie不提供设置HttpOnly属性的方法,因此如果需要设置HttpOnly属性,则必须自行处理。
导入javax.servlet.http.cookie;
import javax.servlet.http.http无servlet保罗;
公共类套接字util {
//*
HttpOnly Cookie设置
* @ param响应http响应
* @param cookie Cookie对象
* @param isHTTPOnly是HttpOnly吗
*/
publicstaticvoidaddcookie (httpservletresponseresponse,Cookie cookie,布尔is http only ) {
String name=cookie.getName (; //Cookie名称
String value=cookie.getValue (; //Cookie值
int maxAge=cookie.getMaxAge (; //最大生存时间(毫秒,0表示删除,-1表示与浏览器会话匹配)。
String path=cookie.getPath (; //路径
String domain=cookie.getDomain (; //域
booleanissecure=cookie.get secure (; //是否为安全协议信息
stringbuilder buffer=new stringbuilder (;
buffer.append(name ).append ('='.append ) ) value ).append ) ); )。 );
if (最大值==0) {
buffer.append (expires=thu Jan 0108336000336000 CST 1970; ' );
}elseif(maxage0) )。
buffer.append('max-age=' ).append ) (maxage ).append ) )。 );
}
域!=空) {
buffer.append('domain=' ).append (domain ).append )、';' );
}
If (路径!=空) {
buffer.append('path=' ).append (path ).append ) )。 );
}
if (is安全) {
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.sethttponly(true;