<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>leŭksman</title>
	<atom:link href="http://leuksman.com/log/feed/" rel="self" type="application/rss+xml" />
	<link>http://leuksman.com/log</link>
	<description>reticula, electronica, &#38; oddities</description>
	<pubDate>Tue, 13 May 2008 17:10:50 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.5.1</generator>
	<language>en</language>
			<item>
		<title>Customer Experience</title>
		<link>http://leuksman.com/log/2008/05/13/customer-experience/</link>
		<comments>http://leuksman.com/log/2008/05/13/customer-experience/#comments</comments>
		<pubDate>Tue, 13 May 2008 17:10:50 +0000</pubDate>
		<dc:creator>brion</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://leuksman.com/log/?p=153</guid>
		<description><![CDATA[
Riiiiight&#8230; 
]]></description>
			<content:encoded><![CDATA[<p><img src="http://leuksman.com/log/wp-content/uploads/2008/05/snicker.png" alt="" title="snicker" width="305" height="48" class="alignnone size-full wp-image-154" /></p>
<p>Riiiiight&#8230; <img src='http://leuksman.com/log/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://leuksman.com/log/2008/05/13/customer-experience/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RecentChangesCamp!</title>
		<link>http://leuksman.com/log/2008/05/09/recentchangescamp/</link>
		<comments>http://leuksman.com/log/2008/05/09/recentchangescamp/#comments</comments>
		<pubDate>Fri, 09 May 2008 23:25:01 +0000</pubDate>
		<dc:creator>brion</dc:creator>
		
		<category><![CDATA[california]]></category>

		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://leuksman.com/log/?p=150</guid>
		<description><![CDATA[About to head out to RecentChangesCamp 2008 in Palo Alto, CA&#8230; see y&#8217;all there!
]]></description>
			<content:encoded><![CDATA[<p>About to head out to <a href="http://rcc2008.blueoxen.net/">RecentChangesCamp 2008</a> in Palo Alto, CA&#8230; see y&#8217;all there!</p>
]]></content:encoded>
			<wfw:commentRss>http://leuksman.com/log/2008/05/09/recentchangescamp/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Google Transit yay!</title>
		<link>http://leuksman.com/log/2008/05/08/google-transit-yay/</link>
		<comments>http://leuksman.com/log/2008/05/08/google-transit-yay/#comments</comments>
		<pubDate>Thu, 08 May 2008 22:41:15 +0000</pubDate>
		<dc:creator>brion</dc:creator>
		
		<category><![CDATA[life]]></category>

		<category><![CDATA[whinging]]></category>

		<guid isPermaLink="false">http://leuksman.com/log/?p=149</guid>
		<description><![CDATA[A few months ago I whined about the Google Maps transit planner not working very well.
Well somewhere since I last looked, they fixed it!
Transit directions now include San Francisco MUNI bus and train routes and walking to/from stations, so you can actually put in start and end points and get something useful! The alternate route [...]]]></description>
			<content:encoded><![CDATA[<p>A few months ago <a href="http://leuksman.com/log/2008/01/17/google-transit-wtf/">I whined about the Google Maps transit planner</a> not working very well.</p>
<p>Well somewhere since I last looked, they fixed it!</p>
<p><a href="http://maps.google.com/transit">Transit directions</a> now include San Francisco MUNI bus and train routes and walking to/from stations, so you can actually put in start and end points and get something useful! The alternate route selection is a little different from the driving directions (you get a short list of a few options, rather than being able to click and drag waypoints to whatever route you like), but still quite useful; it comes up with pretty close facsimiles to the three alternate commute routes I use in reality.</p>
<p>Goodbye, <a href="http://511.org/">511.org</a>!</p>
<p>Now if they can just integrate the transit lookups into the iPhone Google Maps widget&#8230; d&#8217;oh!</p>
]]></content:encoded>
			<wfw:commentRss>http://leuksman.com/log/2008/05/08/google-transit-yay/feed/</wfw:commentRss>
		</item>
		<item>
		<title>German FlaggedRevs tested for 10 minutes</title>
		<link>http://leuksman.com/log/2008/05/02/german-flaggedrevs-tested-for-10-minutes/</link>
		<comments>http://leuksman.com/log/2008/05/02/german-flaggedrevs-tested-for-10-minutes/#comments</comments>
		<pubDate>Sat, 03 May 2008 01:22:36 +0000</pubDate>
		<dc:creator>brion</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://leuksman.com/log/?p=148</guid>
		<description><![CDATA[Ok, so we finally got the FlaggedRevs for German Wikipedia config set up&#8230; then turned it off after a few minutes.
We did, alas, encounter a few problems, which didn&#8217;t come up as much in earlier testing, but came up *hard* in a few minutes around 3am at Wikipedia.  
Floating UI boxes and floating infoboxes [...]]]></description>
			<content:encoded><![CDATA[<p>Ok, so we finally got the <a href="https://secure.wikimedia.org/wikipedia/de/wiki/Hilfe:Gesichtete_und_gepr%C3%BCfte_Versionen">FlaggedRevs for German Wikipedia</a> config set up&#8230; then turned it off after a few minutes.</p>
<p>We did, alas, encounter a few problems, which didn&#8217;t come up as much in earlier testing, but came up *hard* in a few minutes around 3am at Wikipedia. <img src='http://leuksman.com/log/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><a href="http://www.mediawiki.org/wiki/Image:FlaggedRevs_simple_UI_float_problem.png">Floating UI boxes and floating infoboxes don&#8217;t mix well.</a></p>
<p>The nice small versioning marker is <i>really nice</i>, but that&#8217;s way too disruptive, and we&#8217;ll need to get it worked out one way or another.</p>
<p>Second, some of the reporting pages weren&#8217;t working, in part due to some last-minute tweaks to the DB layout to make it easier to deploy. (This should be fixed now.)</p>
<p>Third, the &#8220;redirected from&#8221; subtitles are being broken, which&#8217;ll disrupt some general editing functionality in an unpleasant way. <a href="http://de.labs.wikimedia.org/wiki/Unendliche_Reihen">An example on de.labs test wiki.</a></p>
<p>Once the UI bits are fixed up, we&#8217;ll give it another test run&#8230; und FlaggedRevs kommt wieder!</p>
]]></content:encoded>
			<wfw:commentRss>http://leuksman.com/log/2008/05/02/german-flaggedrevs-tested-for-10-minutes/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Top 10 Wikimedia DB errors</title>
		<link>http://leuksman.com/log/2008/05/02/top-10-wikimedia-db-errors/</link>
		<comments>http://leuksman.com/log/2008/05/02/top-10-wikimedia-db-errors/#comments</comments>
		<pubDate>Fri, 02 May 2008 17:55:48 +0000</pubDate>
		<dc:creator>brion</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://leuksman.com/log/?p=147</guid>
		<description><![CDATA[I did a quick look last night through our database error logs for the last week or so, breaking them down by function and error type. Here&#8217;s the top ten function-err loci:


Hits
Function
errno
Error


620
Article::updateCategoryCounts
1213
Deadlock found when trying to get lock; Try restarting transaction


240
Article::insertOn
1062
Duplicate entry &#8216;N-XXX&#8217; for key 2


41
Article::doDeleteArticle
1213
Deadlock found when trying to get lock; Try restarting transaction


26
LinksUpdate::incrTableUpdate
1213
Deadlock [...]]]></description>
			<content:encoded><![CDATA[<p>I did a quick look last night through our database error logs for the last week or so, breaking them down by function and error type. Here&#8217;s the top ten function-err loci:</p>
<table border="1">
<tr>
<th>Hits</th>
<th>Function</th>
<th>errno</th>
<th>Error</th>
</tr>
<tr>
<td>620</td>
<td>Article::updateCategoryCounts</td>
<td>1213</td>
<td>Deadlock found when trying to get lock; Try restarting transaction</td>
</tr>
<tr>
<td>240</td>
<td>Article::insertOn</td>
<td>1062</td>
<td>Duplicate entry &#8216;N-XXX&#8217; for key 2</td>
</tr>
<tr>
<td>41</td>
<td>Article::doDeleteArticle</td>
<td>1213</td>
<td>Deadlock found when trying to get lock; Try restarting transaction</td>
</tr>
<tr>
<td>26</td>
<td>LinksUpdate::incrTableUpdate</td>
<td>1213</td>
<td>Deadlock found when trying to get lock; Try restarting transaction</td>
</tr>
<tr>
<td>19</td>
<td>TitleKey::prefixSearch</td>
<td>1030</td>
<td>Got error 28 from table handler</td>
</tr>
<tr>
<td>9</td>
<td>Title::invalidateCache</td>
<td>1213</td>
<td>Deadlock found when trying to get lock; Try restarting transaction</td>
</tr>
<tr>
<td>9</td>
<td></td>
<td>2013</td>
<td>Lost connection to MySQL server during query</td>
</tr>
<tr>
<td>8</td>
<td>User::saveSettings</td>
<td>1205</td>
<td>Lock wait timeout exceeded; Try restarting transaction</td>
</tr>
<tr>
<td>8</td>
<td>TitleKey::prefixSearch</td>
<td>2003</td>
<td>Can&#8217;t connect to MySQL server on &#8216;XXX&#8217;</td>
</tr>
<tr>
<td>7</td>
<td>Job::pop</td>
<td>1213</td>
<td>Deadlock found when trying to get lock; Try restarting transaction</td>
</tr>
</table>
<p>A large chunk of our DB errors are from conflicting transactions; the number one spot is currently taken up by updates to category counts, which is often part of an expensive page deletion transaction.</p>
<p>We&#8217;re often pretty lazy about rerunning database transactions when they&#8217;re rolled back, throwing an error and making the end-user resubmit the change. This is kind of lame, but at least the transaction rollback theoretically keeps the database consistent.</p>
<p>The number two spot seems to be for conflicting page creations &#8212; possibly due to automatic resubmissions after a slow save operation.</p>
<p>There&#8217;s a few &#8220;disk full&#8221; errors, which were probably due to a transitory error on one DB box.</p>
]]></content:encoded>
			<wfw:commentRss>http://leuksman.com/log/2008/05/02/top-10-wikimedia-db-errors/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Diff bug fixed, hopefully</title>
		<link>http://leuksman.com/log/2008/04/26/diff-bug-fixed-hopefully/</link>
		<comments>http://leuksman.com/log/2008/04/26/diff-bug-fixed-hopefully/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 22:24:50 +0000</pubDate>
		<dc:creator>brion</dc:creator>
		
		<category><![CDATA[devel]]></category>

		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://leuksman.com/log/?p=145</guid>
		<description><![CDATA[For a long time we&#8217;ve had intermittent problems with diffs displaying incorrectly, with lines on the left side mysteriously repeated:

Reports skyrocketed the other day, when the wikidiff2 extension (our C++ reimplementation of MediaWiki&#8217;s diff algorithm, about a billion times faster than the PHP one) was upgraded to match upgrades of PHP on our older, Fedora [...]]]></description>
			<content:encoded><![CDATA[<p>For a long time we&#8217;ve had intermittent problems with diffs displaying incorrectly, with lines on the left side mysteriously repeated:</p>
<div align="center"><a href='http://leuksman.com/log/wp-content/uploads/2008/04/diff-hell.png'><img src="http://leuksman.com/log/wp-content/uploads/2008/04/diff-hell.png" alt="" title="diff-hell" width="400" height="200" class="alignnone size-medium wp-image-146" /></a></div>
<p>Reports skyrocketed the other day, when the wikidiff2 extension (our C++ reimplementation of MediaWiki&#8217;s diff algorithm, about a billion times faster than the PHP one) was upgraded to match upgrades of PHP on our older, Fedora Core-based servers.</p>
<p>I added in <a href="https://wikitech.leuksman.com/view/Diff_hell">some logging hacks</a> to try to track it down, but didn&#8217;t get a lot of data points until I tried the simple expedient of running every diff twice &#8212; if the results don&#8217;t match, log the error.</p>
<p>With a few hundred instances logged, it became clear that the problem was limited to servers running Fedora 4; even-older Fedora 3 boxes were unaffected, as were all our newer Ubuntu boxes. Mysterious problems caused by C++ run-time library mismatches between different Linux releases are not at all uncommon; it looked like we&#8217;d installed an FC3 binary on all the machines, and it was intermittently failing on FC4.</p>
<p>I recompiled the extension, this time with separate builds on FC3 and FC4, and haven&#8217;t seen any bad diffs come through my log in the last half hour&#8230; so far so good! <img src='http://leuksman.com/log/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://leuksman.com/log/2008/04/26/diff-bug-fixed-hopefully/feed/</wfw:commentRss>
		</item>
		<item>
		<title>So what&#8217;s in the job queue anyway?</title>
		<link>http://leuksman.com/log/2008/04/22/so-whats-in-the-job-queue-anyway/</link>
		<comments>http://leuksman.com/log/2008/04/22/so-whats-in-the-job-queue-anyway/#comments</comments>
		<pubDate>Wed, 23 Apr 2008 00:17:56 +0000</pubDate>
		<dc:creator>brion</dc:creator>
		
		<category><![CDATA[devel]]></category>

		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://leuksman.com/log/2008/04/22/so-whats-in-the-job-queue-anyway/</guid>
		<description><![CDATA[In en.wikipedia.org&#8217;s job queue at the moment, breakdown by job type&#8230;


job_cmd
count(*)


htmlCacheUpdate
31,147


refreshLinks
10,106,739


renameUser
119


Note that the current system allows for duplicate entries to get put in the queue; the dupes are removed as the first one in the stack gets run. This makes the raw number of refreshLinks entries much higher than it &#8220;really&#8221; is &#8212; Talk:Union Station [...]]]></description>
			<content:encoded><![CDATA[<p>In en.wikipedia.org&#8217;s job queue at the moment, breakdown by job type&#8230;</p>
<table border="1">
<tr>
<th>job_cmd</th>
<th>count(*)</th>
</tr>
<tr>
<td>htmlCacheUpdate</td>
<td>31,147</td>
</tr>
<tr>
<td>refreshLinks</td>
<td>10,106,739</td>
</tr>
<tr>
<td>renameUser</td>
<td>119</td>
</tr>
</table>
<p>Note that the current system allows for duplicate entries to get put in the queue; the dupes are removed as the first one in the stack gets run. This makes the raw number of refreshLinks entries <b>much</b> higher than it &#8220;really&#8221; is &#8212; <a href="http://en.wikipedia.org/wiki/Talk%3AUnion_Station_%28Louisville%29">Talk:Union Station (Louisville)</a> is listed 9 times, presumably once for each template edit that triggered an &#8220;update me!&#8221; job.</p>
<p><b>Update:</b> Figured out why the queues were growing so big last few days &#8212; system clock was 7 seconds slow on the database master. This made the replication lag detection misread a 7-second minimum lag on every slave. The job queue batch runners were all sitting waiting for the lag to resolve. <img src='http://leuksman.com/log/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Resynced the clock (presumably drifted during the period when some IPs were broken), things are moving again.</p>
]]></content:encoded>
			<wfw:commentRss>http://leuksman.com/log/2008/04/22/so-whats-in-the-job-queue-anyway/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Visual Voicemail fixed</title>
		<link>http://leuksman.com/log/2008/04/22/visual-voicemail-fixed/</link>
		<comments>http://leuksman.com/log/2008/04/22/visual-voicemail-fixed/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 21:30:07 +0000</pubDate>
		<dc:creator>brion</dc:creator>
		
		<category><![CDATA[apple]]></category>

		<category><![CDATA[wtf]]></category>

		<guid isPermaLink="false">http://leuksman.com/log/2008/04/22/visual-voicemail-fixed/</guid>
		<description><![CDATA[One of the oh-so-cute features of the iPhone is visual voicemail, the &#8220;duh&#8221; feature of showing you an actual on-screen list of your voicemails instead of making you sit through voice prompts.
Bad: My iPhone mysteriously reverted to the classic &#8220;press 7 to delete&#8221; system when I changed rate plans a couple weeks ago&#8230; with voice [...]]]></description>
			<content:encoded><![CDATA[<p>One of the oh-so-cute features of the iPhone is <a href="http://en.wikipedia.org/wiki/Visual_voicemail">visual voicemail</a>, the &#8220;duh&#8221; feature of showing you an actual on-screen list of your voicemails instead of making you sit through voice prompts.</p>
<p><b>Bad:</b> My iPhone mysteriously reverted to the classic &#8220;press 7 to delete&#8221; system when I changed rate plans a couple weeks ago&#8230; with voice mail <b>disabled altogether so callers couldn&#8217;t leave messages</b> until I noticed it and set up a new password.</p>
<p>A little Googling indicates this is a fairly common mix-up, and the only way to restore visual voicemail is to call AT&#038;T tech support and have them fiddle with your account settings.</p>
<p><b>Good:</b> AT&#038;T tech support was able to fix the account settings so it works again&#8230; after a half hour on hold&#8230; <img src='http://leuksman.com/log/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><b>WTF:</b> The AT&#038;T tech <i>swore</i> that visual voicemail <i>doesn&#8217;t work</i> if you have a WiFi connection active. He had me disable WiFi while initially testing it, then when I asked him about it he told me outright that Visual Voicemail only works on the EDGE network and therefore you must turn off WiFi to check your voicemail.</p>
<p>This is demonstrably false; just to confirm I hadn&#8217;t been crazy for the couple of months my voicemail was working just fine, I turned WiFi back on, left myself a voicemail, and retrieved it just fine in all its visual glory.</p>
<p>It&#8217;s entirely possible that the voicemails still <i>download</i> over EDGE, but having the WiFi up doesn&#8217;t seem to interfere at all.</p>
<p>Now if they can just add a feature to route phone calls over WiFi, I could actually get calls through from my flat. <img src='http://leuksman.com/log/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://leuksman.com/log/2008/04/22/visual-voicemail-fixed/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Suggestion search drop-down</title>
		<link>http://leuksman.com/log/2008/04/21/suggestion-search-drop-down/</link>
		<comments>http://leuksman.com/log/2008/04/21/suggestion-search-drop-down/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 01:05:36 +0000</pubDate>
		<dc:creator>brion</dc:creator>
		
		<category><![CDATA[devel]]></category>

		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://leuksman.com/log/2008/04/21/suggestion-search-drop-down/</guid>
		<description><![CDATA[Another in today&#8217;s series of fun feature enablings&#8230;
The search boxes on Wikimedia wikis now have an AJAX-powered search suggestion drop-down. This calls our JSON OpenSearch suggestion interface, which has been used for some time by Firefox&#8217;s search box and Mac OS X 10.5&#8217;s Dictionary application, but is now built-in for your viewing pleasure.
(In MediaWiki 1.13 [...]]]></description>
			<content:encoded><![CDATA[<p>Another in today&#8217;s series of fun feature enablings&#8230;</p>
<p>The <a href="http://en.wikipedia.org/wiki/Special:Search">search boxes on Wikimedia wikis</a> now have an AJAX-powered search suggestion drop-down. This calls our JSON <a href="http://en.wikipedia.org/wiki/Opensearch#Search_engines_and_software_that_support_OpenSearch">OpenSearch suggestion interface</a>, which has been used for some time by Firefox&#8217;s search box and Mac OS X 10.5&#8217;s Dictionary application, but is now built-in for your viewing pleasure.</p>
<p>(In MediaWiki 1.13 development trunk, turn on $wgEnableMWSuggest to experience this yourself!)</p>
<p>A similar AJAX-powered search feature has been in MediaWiki for some time, but the user interface for it took over the whole article area, which was a bit distracting, and we never used it ourselves.</p>
<p>Robert Stojnic, the tireless coder who&#8217;s put a <b>huge</b> amount of effort into fixing up our Lucene-based search engine over the last months, patched up the front-end to fit more naturally into the existing forms.</p>
<p>The built-in search for suggestions is currently a simple prefix match, so it&#8217;ll help you complete words and names, but isn&#8217;t smart enough to fill out from a last name or skip &#8220;the&#8221; etc. Robert&#8217;s got a new backend in the works, which will add all those smarts when we&#8217;re ready to upgrade the search systems with the new software and a bit beefier hardware.</p>
<p>Prefix matches are a heck of a lot better than nothing, though, and as long as it&#8217;s not causing undue server load we&#8217;ll keep it on until the new backend&#8217;s ready.</p>
<p>(If you don&#8217;t like the suggestions widget, you can disable them by checking &#8220;Disable AJAX suggestions&#8221; in the &#8220;Search&#8221; tab at Special:Preferences.)</p>
]]></content:encoded>
			<wfw:commentRss>http://leuksman.com/log/2008/04/21/suggestion-search-drop-down/feed/</wfw:commentRss>
		</item>
		<item>
		<title>HttpOnly cookies</title>
		<link>http://leuksman.com/log/2008/04/21/httponly-cookies/</link>
		<comments>http://leuksman.com/log/2008/04/21/httponly-cookies/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 00:00:55 +0000</pubDate>
		<dc:creator>brion</dc:creator>
		
		<category><![CDATA[devel]]></category>

		<category><![CDATA[firefox]]></category>

		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://leuksman.com/log/2008/04/21/httponly-cookies/</guid>
		<description><![CDATA[Thanks to Werdna&#8217;s implementation of support, and Tim&#8217;s mass upgrade of our older PHP installations, I&#8217;ve today enabled the use of HttpOnly cookies on the Wikimedia wikis for our login session data.
&#8220;What&#8217;s that,&#8221; I hear you say, &#8220;and why do I want it?&#8221;
The HttpOnly marker on cookies tells a supporting browser that the cookie will [...]]]></description>
			<content:encoded><![CDATA[<p>Thanks to Werdna&#8217;s implementation of support, and Tim&#8217;s mass upgrade of our older PHP installations, I&#8217;ve today enabled the use of <a href="http://msdn2.microsoft.com/en-us/library/ms533046.aspx">HttpOnly cookies</a> on the Wikimedia wikis for our login session data.</p>
<p>&#8220;What&#8217;s that,&#8221; I hear you say, &#8220;and why do I want it?&#8221;</p>
<p>The HttpOnly marker on cookies tells a supporting browser that the cookie will only be used directly by the web server (sent <b>only</b> with the <b>HTTP</b> requests for each page), so it will hide the cookie from any JavaScript client code which asks for it.</p>
<p>This provides protection against certain kinds of security vulnerabilities &#8212; namely, <a href="http://en.wikipedia.org/wiki/Cross-site_scripting">XSS attacks</a> which steal authenticated session and long-term login token cookies.</p>
<p>HttpOnly doesn&#8217;t fix XSS, not by a long shot, but it does reduce what an attacker can do; particularly nice when we&#8217;re soon going to start using global login cookies which will allow a unified account to continue a login session across multiple wikis on different domains.</p>
<p>The <a href="http://en.wikipedia.org/wiki/Same_origin_policy">same origin policy</a> prevents JavaScript on one subdomain from directly accessing another domain. Keeping the cross-domain session cookies away from compromised JavaScript will help prevent a hypothetical attack on one domain from jumping to other subdomains without the vulnerability.</p>
<p>Unfortunately, this marker isn&#8217;t standard; it&#8217;s an extension which Microsoft added for Internet Explorer in 6.0 SP1, but support has been slowly creeping into other browsers, finally hitting Firefox somewhere in the 2.0 patch cycle while nobody was looking.</p>
<p>Browsers I tested that currently support HttpOnly cookies:</p>
<ul>
<li>IE/Win 6 SP1 or 7
<li>Firefox 2.0.0.5 or later
<li>Opera 9.50 beta
<li>Konqueror (3.4?)
</ul>
<p>Other browsers will still expose the cookies to JavaScript, as they always have:</p>
<ul>
<li>Safari 3.1
<li>Opera 9.27 (current non-Beta release)
<li>Old scary browsers like IE for Mac and Netscape 4 <img src='http://leuksman.com/log/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
</ul>
<p>There&#8217;s a rumor that some versions of WebTV fail altogether when the cookies are marked this way, but I have no way to confirm or deny that yet.</p>
<p><b>Update 2008-05-01:</b> <a href="https://bugzilla.wikimedia.org/show_bug.cgi?id=13905">Mac IE</a> turns out to eat HttpOnly cookies&#8230;. sometimes&#8230; when the moon is just right. <img src='http://leuksman.com/log/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Added a browser blacklist, so we feed Mac IE regular cookies. Other browsers are still given the benefit of the doubt.</p>
]]></content:encoded>
			<wfw:commentRss>http://leuksman.com/log/2008/04/21/httponly-cookies/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
