<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Abusing the Cache: Tracking Users without Cookies</title>
	<atom:link href="http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/feed/" rel="self" type="application/rss+xml" />
	<link>http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/</link>
	<description>It's a blog about the web, by Josh. Geddit?</description>
	<lastBuildDate>Mon, 31 Jan 2011 18:23:57 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
	<item>
		<title>By: Paranoid Firefox &#124; Wilfred Hughes</title>
		<link>http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/comment-page-1/#comment-16305</link>
		<dc:creator>Paranoid Firefox &#124; Wilfred Hughes</dc:creator>
		<pubDate>Sun, 10 Oct 2010 23:05:15 +0000</pubDate>
		<guid isPermaLink="false">http://joshduck.com/blog/?p=17#comment-16305</guid>
		<description>[...] aware that at least two researchers are researching into tracking users using only the cache (using iframes or ETags). The truly paranoid Firefox user will therefore want Firefox to regularly clear its [...]</description>
		<content:encoded><![CDATA[<p>[...] aware that at least two researchers are researching into tracking users using only the cache (using iframes or ETags). The truly paranoid Firefox user will therefore want Firefox to regularly clear its [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: SymKat</title>
		<link>http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/comment-page-1/#comment-11078</link>
		<dc:creator>SymKat</dc:creator>
		<pubDate>Sun, 22 Aug 2010 02:04:14 +0000</pubDate>
		<guid isPermaLink="false">http://joshduck.com/blog/?p=17#comment-11078</guid>
		<description>That&#039;s an excellent idea.

Though, taking the AJAX idea from Richard a bit further, what about using the ETag header and embedding the uniq ID in there.  You could have one file request without query strings.

Change the Cache-Control to max-age=0, must-revalidate and Expires: -1, then add ETag:.  Subsequent requests will use the If-None-Match: request header.

I wrote a blog entry about HTTP headers last week that explains these headers and how they function more in depth here: http://symkat.com/45/understanding-http-caching/

Of course, the best resource if you&#039;re the type who likes huge documents would be RFC 2616.  Specific attention to section 14.</description>
		<content:encoded><![CDATA[<p>That&#8217;s an excellent idea.</p>
<p>Though, taking the AJAX idea from Richard a bit further, what about using the ETag header and embedding the uniq ID in there.  You could have one file request without query strings.</p>
<p>Change the Cache-Control to max-age=0, must-revalidate and Expires: -1, then add ETag:.  Subsequent requests will use the If-None-Match: request header.</p>
<p>I wrote a blog entry about HTTP headers last week that explains these headers and how they function more in depth here: <a href="http://symkat.com/45/understanding-http-caching/" rel="nofollow">http://symkat.com/45/understanding-http-caching/</a></p>
<p>Of course, the best resource if you&#8217;re the type who likes huge documents would be RFC 2616.  Specific attention to section 14.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmitry Vl.Bondar</title>
		<link>http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/comment-page-1/#comment-7562</link>
		<dc:creator>Dmitry Vl.Bondar</dc:creator>
		<pubDate>Wed, 28 Apr 2010 09:20:45 +0000</pubDate>
		<guid isPermaLink="false">http://joshduck.com/blog/?p=17#comment-7562</guid>
		<description>The technique doesn&#039;t work if web address contains port number like www.mysite.com:8082</description>
		<content:encoded><![CDATA[<p>The technique doesn&#8217;t work if web address contains port number like <a href="http://www.mysite.com:8082" rel="nofollow">http://www.mysite.com:8082</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Josh</title>
		<link>http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/comment-page-1/#comment-7071</link>
		<dc:creator>Josh</dc:creator>
		<pubDate>Mon, 05 Apr 2010 20:46:12 +0000</pubDate>
		<guid isPermaLink="false">http://joshduck.com/blog/?p=17#comment-7071</guid>
		<description>Thanks Nathan. Good spot.</description>
		<content:encoded><![CDATA[<p>Thanks Nathan. Good spot.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nathan Friedly</title>
		<link>http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/comment-page-1/#comment-7070</link>
		<dc:creator>Nathan Friedly</dc:creator>
		<pubDate>Mon, 05 Apr 2010 20:40:54 +0000</pubDate>
		<guid isPermaLink="false">http://joshduck.com/blog/?p=17#comment-7070</guid>
		<description>heh, I topoed my corection, lol. it should say:

header(“Last-Modified: $modified GMT”);</description>
		<content:encoded><![CDATA[<p>heh, I topoed my corection, lol. it should say:</p>
<p>header(“Last-Modified: $modified GMT”);</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nathan Friedly</title>
		<link>http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/comment-page-1/#comment-7069</link>
		<dc:creator>Nathan Friedly</dc:creator>
		<pubDate>Mon, 05 Apr 2010 20:40:09 +0000</pubDate>
		<guid isPermaLink="false">http://joshduck.com/blog/?p=17#comment-7069</guid>
		<description>I think you have a mistake in your code.

Line 56 reads:
header(&quot;Last-Modified: $expires GMT&quot;);

You probably meant:
header(&quot;Last-Modified: $emodified GMT&quot;);

As it is now, you&#039;re claiming the last-modified date is 10 years in the future.</description>
		<content:encoded><![CDATA[<p>I think you have a mistake in your code.</p>
<p>Line 56 reads:<br />
header(&#8220;Last-Modified: $expires GMT&#8221;);</p>
<p>You probably meant:<br />
header(&#8220;Last-Modified: $emodified GMT&#8221;);</p>
<p>As it is now, you&#8217;re claiming the last-modified date is 10 years in the future.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: JasonMorrison.net</title>
		<link>http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/comment-page-1/#comment-5923</link>
		<dc:creator>JasonMorrison.net</dc:creator>
		<pubDate>Wed, 10 Feb 2010 08:17:16 +0000</pubDate>
		<guid isPermaLink="false">http://joshduck.com/blog/?p=17#comment-5923</guid>
		<description>&lt;strong&gt;Three Ways Sites Can Track Visitors Without Cookies, Part 2...&lt;/strong&gt;

In part 1, I wrote about the EFF’s Panopticlick project and the implications for anonymity. I&#8217;ve got two more methods up my sleeve. 2. Use the cache. Cookies aren&#8217;t the only thing your browser downloads and keeps around, and for good reaso....</description>
		<content:encoded><![CDATA[<p><strong>Three Ways Sites Can Track Visitors Without Cookies, Part 2&#8230;</strong></p>
<p>In part 1, I wrote about the EFF’s Panopticlick project and the implications for anonymity. I&#8217;ve got two more methods up my sleeve. 2. Use the cache. Cookies aren&#8217;t the only thing your browser downloads and keeps around, and for good reaso&#8230;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: admin</title>
		<link>http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/comment-page-1/#comment-5704</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Fri, 29 Jan 2010 21:35:00 +0000</pubDate>
		<guid isPermaLink="false">http://joshduck.com/blog/?p=17#comment-5704</guid>
		<description>@Mogden, that&#039;s a good point. I haven&#039;t done much testing as to how long the data is retained as this was more a proof of concept. Like I said in the post I believe it would be more suited towards being used with cookies to make sessions more sticky.</description>
		<content:encoded><![CDATA[<p>@Mogden, that&#8217;s a good point. I haven&#8217;t done much testing as to how long the data is retained as this was more a proof of concept. Like I said in the post I believe it would be more suited towards being used with cookies to make sessions more sticky.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: admin</title>
		<link>http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/comment-page-1/#comment-5703</link>
		<dc:creator>admin</dc:creator>
		<pubDate>Fri, 29 Jan 2010 21:28:39 +0000</pubDate>
		<guid isPermaLink="false">http://joshduck.com/blog/?p=17#comment-5703</guid>
		<description>Ray, the initial request is marked with Cache-control: private so intermediate proxies should know not to cache the page. Only the client will keep the cache.</description>
		<content:encoded><![CDATA[<p>Ray, the initial request is marked with Cache-control: private so intermediate proxies should know not to cache the page. Only the client will keep the cache.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: uberVU - social comments</title>
		<link>http://joshduck.com/blog/2010/01/29/abusing-the-cache-tracking-users-without-cookies/comment-page-1/#comment-5700</link>
		<dc:creator>uberVU - social comments</dc:creator>
		<pubDate>Fri, 29 Jan 2010 15:27:36 +0000</pubDate>
		<guid isPermaLink="false">http://joshduck.com/blog/?p=17#comment-5700</guid>
		<description>&lt;strong&gt;Social comments and analytics for this post...&lt;/strong&gt;

This post was mentioned on Reddit by k4st: That is surprisingly cool. I think that if the author can make this method work without Javascript and show that it is a cross-browser solution then it could be used (almost) anywhere where a cookie could be u...</description>
		<content:encoded><![CDATA[<p><strong>Social comments and analytics for this post&#8230;</strong></p>
<p>This post was mentioned on Reddit by k4st: That is surprisingly cool. I think that if the author can make this method work without Javascript and show that it is a cross-browser solution then it could be used (almost) anywhere where a cookie could be u&#8230;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

