On Wed, Feb 21, 2007 at 05:53:56PM -0800, Robert Stone wrote: > Package: libapache-request-perl > Version: 1.33-1 > Severity: wishlist > > As best I can tell Apache::Cookie has no direct way to add the > HttpOnly flag to the cookies it sets. Although browser support for this > feature is still spotty, it is a useful measure to limit the impact of > cross-site scripting attacks in supported browsers. > http://msdn.microsoft.com/workshop/author/dhtml/httponly_cookies.asp > provides some info on the intended syntax and support.
This new feature is unlikely to be implemented in Apache::Cookie - this package has not seen an upstream release since 2004. I don't wish to maintain a Debian-specific patch just for this. Might I suggest you look into moving to mod_perl v2 / Apache2::Request / Apache2::Cookie? That seems a better place for these sorts of new features to be implemented. -- _ivan > diff -Naur libapache-request-perl-1.33.old/c/apache_cookie.c > libapache-request-perl-1.33/c/apache_cookie.c > --- libapache-request-perl-1.33.old/c/apache_cookie.c 2004-11-26 > 15:02:03.000000000 -0800 > +++ libapache-request-perl-1.33/c/apache_cookie.c 2007-02-21 > 15:42:01.924134177 -0800 > @@ -59,6 +59,14 @@ > } > retval = c->secure ? "on" : ""; > break; > + case 'h': > + if(val) { > + c->httponly = > + !strcaseEQ(val, "off") && > + !strcaseEQ(val, "0"); > + } > + retval = c->httponly ? "on" : ""; > + break; > default: > ap_log_rerror(APC_ERROR, > "[libapreq] unknown cookie pair: `%s' => `%s'", key, val); > @@ -78,6 +86,7 @@ > c->r = r; > c->values = ap_make_array(r->pool, 1, sizeof(char *)); > c->secure = 0; > + c->httponly = 0; > c->name = c->expires = NULL; > > c->domain = NULL; > @@ -201,6 +210,9 @@ > if (c->secure) { > cookie_push_arr(values, "secure"); > } > + if(c->httponly) { > + cookie_push_arr(values, "HttpOnly"); > + } > > cookie = ap_pstrcat(p, escape_url(p, c->name), "=", NULL); > for (i=0; i<c->values->nelts; i++) { > diff -Naur libapache-request-perl-1.33.old/c/apache_cookie.h > libapache-request-perl-1.33/c/apache_cookie.h > --- libapache-request-perl-1.33.old/c/apache_cookie.h 2004-11-26 > 15:02:03.000000000 -0800 > +++ libapache-request-perl-1.33/c/apache_cookie.h 2007-02-21 > 15:45:47.076077858 -0800 > @@ -29,6 +29,7 @@ > char *expires; > char *path; > int secure; > + int httponly; > } ApacheCookie; > > #ifdef __cplusplus > diff -Naur libapache-request-perl-1.33.old/Cookie/Cookie.pm > libapache-request-perl-1.33/Cookie/Cookie.pm > --- libapache-request-perl-1.33.old/Cookie/Cookie.pm 2004-11-26 > 15:02:04.000000000 -0800 > +++ libapache-request-perl-1.33/Cookie/Cookie.pm 2007-02-21 > 17:27:45.176540603 -0800 > @@ -146,6 +146,13 @@ > my $secure = $cookie->secure; > $cookie->secure(1); > > +=head2 httponly > + > +Get or set the HttpOnly flag for the cookie: > + > + my $HttpOnly = $cookie->httponly; > + $cookie->httponly(1); > + > =back > > =head1 CAVEATS > diff -Naur libapache-request-perl-1.33.old/Cookie/Cookie.xs > libapache-request-perl-1.33/Cookie/Cookie.xs > --- libapache-request-perl-1.33.old/Cookie/Cookie.xs 2004-12-06 > 06:49:46.000000000 -0800 > +++ libapache-request-perl-1.33/Cookie/Cookie.xs 2007-02-21 > 17:28:25.687726275 -0800 > @@ -130,6 +130,9 @@ > #define ApacheCookie_secure(c, val) \ > ApacheCookie_attr(c, "secure", val) > > +#define ApacheCookie_httponly(c, val) \ > +ApacheCookie_attr(c, "httponly", val) > + > MODULE = Apache::Cookie PACKAGE = Apache::Cookie PREFIX = ApacheCookie_ > > PROTOTYPES: DISABLE > @@ -297,6 +300,11 @@ > Apache::Cookie c > char *val > > +char * > +ApacheCookie_httponly(c, val=NULL) > + Apache::Cookie c > + char *val > + > void > ApacheCookie_bake(c) > Apache::Cookie c > diff -Naur libapache-request-perl-1.33.old/libapreq.pod > libapache-request-perl-1.33/libapreq.pod > --- libapache-request-perl-1.33.old/libapreq.pod 2004-11-26 > 15:02:04.000000000 -0800 > +++ libapache-request-perl-1.33/libapreq.pod 2007-02-21 17:26:16.902210826 > -0800 > @@ -243,6 +243,12 @@ > of I<On> or I<Off>. > The default is I<Off>. > > +=item -httponly > + > +Sets the I<HttpOnly> field to true or false using a given string value > +of I<On> or I<Off>. > +The default is I<Off>. > + > =back > > Example: -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]