i need set httponly , secure flags on session cookie in google app engine.
i tried following in web.xml
:
<session-config> <cookie-config> <http-only>true</http-only> </cookie-config> </session-config>
however, didn't work.
i tried in top of every jsp:
string sessionid = request.getsession().getid(); response.setheader("set-cookie", "jsessionid=" + sessionid + "; httponly");
how can achieve this?
i had same problem google app engine, wanted add secure
attribute cookies. following shows how i've added secure
attribute cookies. i'm sure solution work substituting secure
httponly
.
i've implemented security filter , made mapping pages want secure
attribute set.
<filter> <filter-name>security filter</filter-name> <filter-class>common.securityfilter</filter-class> </filter> <filter-mapping> <filter-name>security filter</filter-name> <url-pattern>*.jsf</url-pattern> </filter-mapping>
my first try wrap response custom httpservletresponsewrapper
. fine except session cookie doesn't attribute. debugged around , found session cookie not added using mechanism i've expected. i've noticed after touch session session cookie magically added response headers e.g. headers consists line set-cookie: jsessionid=abcdef;path=/
cookie wasn't added using wrapper object i've created. i've figured out after i've touched session can set cookie want attributes want. workaround easy.
public class securityfilter implements filter { @override public void dofilter(servletrequest request, servletresponse response, filterchain chain) throws ioexception, servletexception { // wrap response response = new securecookiesetter((httpservletresponse)response); // touch session (httpservletrequest)request.getsession(); // overwriting cookie secure attribute set ((httpservletresponse)response).setheader("set-cookie", "jsessionid=" + ((httpservletrequest)request).getsession().getid() + ";path=/"); } } public class securecookiesetter extends httpservletresponsewrapper { public securecookiesetter(httpservletresponse response) { super(response); } @override public void addcookie(cookie cookie) { cookie.setsecure(true); super.addcookie(cookie); } @override public void addheader(string name, string value) { if ((name.equals("set-cookie")) && (!value.matches("(^|.*;)\\s*secure"))) { value = value + ";secure"; } super.addheader(name, value); } @override public void setheader(string name, string value) { if ((name.equals("set-cookie")) && (!value.matches("(^|.*;)\\s*secure"))) { value = value + ";secure"; } super.setheader(name, value); } }
Comments
Post a Comment