<?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"
	>
<channel>
	<title>Comments on: Preventing CSRF</title>
	<atom:link href="http://www.gnucitizen.org/blog/preventing-csrf/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gnucitizen.org/blog/preventing-csrf/</link>
	<description>Information Security Think Tank</description>
	<pubDate>Sun, 23 Nov 2008 15:31:11 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
		<item>
		<title>By: Preventing CSRF, the Right Way - KeepItLocked.net</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-124092</link>
		<dc:creator>Preventing CSRF, the Right Way - KeepItLocked.net</dc:creator>
		<pubDate>Fri, 17 Oct 2008 22:01:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-124092</guid>
		<description>[...] type="Submit" value="Click Me"/&#62; &#60;/form&#62; This type of solution is suggested by some reputable sources in application security. In some cases, the CSRF token is the session ID. There are [...]</description>
		<content:encoded><![CDATA[<p>[...] type=&#8221;Submit&#8221; value=&#8221;Click Me&#8221;/&gt; &lt;/form&gt; This type of solution is suggested by some reputable sources in application security. In some cases, the CSRF token is the session ID. There are [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: r3ck0rd</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-121039</link>
		<dc:creator>r3ck0rd</dc:creator>
		<pubDate>Wed, 07 May 2008 08:51:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-121039</guid>
		<description>^ a newbie? 
well yes it could be, easily using PHP :)</description>
		<content:encoded><![CDATA[<p>^ a newbie?<br />
well yes it could be, easily using PHP :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Accounts Security Part III &#124; Th0R's Blog</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-119426</link>
		<dc:creator>Accounts Security Part III &#124; Th0R's Blog</dc:creator>
		<pubDate>Tue, 22 Apr 2008 10:35:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-119426</guid>
		<description>[...]  CSRF Attack: for users and WDev&#38;P Lists of links that may help you preventing CSRF: - http://www.gnucitizen.org/blog/preventing-csrf/ - http://websecurity.ro/blog/2008/03/28/wordpress-233-probably-a-0day-exploit/ - [...]</description>
		<content:encoded><![CDATA[<p>[...]  CSRF Attack: for users and WDev&amp;P Lists of links that may help you preventing CSRF: - <a href="http://www.gnucitizen.org/blog/preventing-csrf/" rel="nofollow">http://www.gnucitizen.org/blog/preventing-csrf/</a> - <a href="http://websecurity.ro/blog/2008/03/28/wordpress-233-probably-a-0day-exploit/" rel="nofollow">http://websecurity.ro/blog/200.....y-exploit/</a> - [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Accounts Security Part III &#124; r3ck0rd's Blog</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-118623</link>
		<dc:creator>Accounts Security Part III &#124; r3ck0rd's Blog</dc:creator>
		<pubDate>Fri, 11 Apr 2008 13:24:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-118623</guid>
		<description>[...]  CSRF Attack: for users and WDev&#38;P Lists of links that may help you preventing CSRF: - http://www.gnucitizen.org/blog/preventing-csrf/ - http://websecurity.ro/blog/2008/03/28/wordpress-233-probably-a-0day-exploit/ - [...]</description>
		<content:encoded><![CDATA[<p>[...]  CSRF Attack: for users and WDev&amp;P Lists of links that may help you preventing CSRF: - <a href="http://www.gnucitizen.org/blog/preventing-csrf/" rel="nofollow">http://www.gnucitizen.org/blog/preventing-csrf/</a> - <a href="http://websecurity.ro/blog/2008/03/28/wordpress-233-probably-a-0day-exploit/" rel="nofollow">http://websecurity.ro/blog/200.....y-exploit/</a> - [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Preventing CSRF efficiently &#187; Inking's Security Blog</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-116811</link>
		<dc:creator>Preventing CSRF efficiently &#187; Inking's Security Blog</dc:creator>
		<pubDate>Tue, 18 Mar 2008 17:01:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-116811</guid>
		<description>[...] forgeries and how to prevent them, however this time slightly different and not only dealing with approaches that have already been discussed numerous times and are likely to fail under certain well known circumstances. It's actually difficult to start on [...]</description>
		<content:encoded><![CDATA[<p>[...] forgeries and how to prevent them, however this time slightly different and not only dealing with approaches that have already been discussed numerous times and are likely to fail under certain well known circumstances. It&#8217;s actually difficult to start on [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Zoiz</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-103503</link>
		<dc:creator>Zoiz</dc:creator>
		<pubDate>Fri, 25 Jan 2008 13:25:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-103503</guid>
		<description>Newbie here. Can I prevent CSRF by matching the referrer URL with my site URL?</description>
		<content:encoded><![CDATA[<p>Newbie here. Can I prevent CSRF by matching the referrer URL with my site URL?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pdp</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-15660</link>
		<dc:creator>pdp</dc:creator>
		<pubDate>Mon, 23 Apr 2007 08:46:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-15660</guid>
		<description>Scott,

good summary my man.</description>
		<content:encoded><![CDATA[<p>Scott,</p>
<p>good summary my man.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Scott Parsons</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-15098</link>
		<dc:creator>Scott Parsons</dc:creator>
		<pubDate>Fri, 20 Apr 2007 18:42:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-15098</guid>
		<description>Newbie here, but have been thinking and discussing CSRF with some other folks.  I'm feeling pretty large that I had come up with the same approach as PDP a couple weeks ago.  While it sessionID &lt;strong&gt;should&lt;/strong&gt; be safe to use, it would seem prudent to use a secure hash of it rather than the sessionID itself.  Provided there is sufficient entropy in the session Id and output bits in the hash, it should be rainbow-table proof.  The advantage is that there is no secret to keep, and it can either be calculated on the server or on the client-side.  This also allows it to be valiated in multiple places without the need to do secret key management, which might be required for an HMAC approach.</description>
		<content:encoded><![CDATA[<p>Newbie here, but have been thinking and discussing CSRF with some other folks.  I&#8217;m feeling pretty large that I had come up with the same approach as PDP a couple weeks ago.  While it sessionID <strong>should</strong> be safe to use, it would seem prudent to use a secure hash of it rather than the sessionID itself.  Provided there is sufficient entropy in the session Id and output bits in the hash, it should be rainbow-table proof.  The advantage is that there is no secret to keep, and it can either be calculated on the server or on the client-side.  This also allows it to be valiated in multiple places without the need to do secret key management, which might be required for an HMAC approach.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pdp</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-14258</link>
		<dc:creator>pdp</dc:creator>
		<pubDate>Fri, 13 Apr 2007 07:05:54 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-14258</guid>
		<description>naka, yes it will work. the problem is how we are going to prevent CSRF without introducing too mush stuff into the system. but yes, this works.</description>
		<content:encoded><![CDATA[<p>naka, yes it will work. the problem is how we are going to prevent CSRF without introducing too mush stuff into the system. but yes, this works.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: naka</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-14252</link>
		<dc:creator>naka</dc:creator>
		<pubDate>Fri, 13 Apr 2007 06:14:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-14252</guid>
		<description>How about using a hashed JSESSIONID instead of raw one?
I think that it is better than the way you suggested.</description>
		<content:encoded><![CDATA[<p>How about using a hashed JSESSIONID instead of raw one?<br />
I think that it is better than the way you suggested.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pdp</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-13143</link>
		<dc:creator>pdp</dc:creator>
		<pubDate>Sat, 07 Apr 2007 06:18:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-13143</guid>
		<description>Kyle,

It all depends. We cannot say whether your application is secure or not. Rethink all technologies that you are using and make sure that they are applied appropriately.</description>
		<content:encoded><![CDATA[<p>Kyle,</p>
<p>It all depends. We cannot say whether your application is secure or not. Rethink all technologies that you are using and make sure that they are applied appropriately.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kyle</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-13104</link>
		<dc:creator>Kyle</dc:creator>
		<pubDate>Sat, 07 Apr 2007 01:01:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-13104</guid>
		<description>In my admin section, the forms are submitted over xmlhttprequest. So instead of using javascript to rewrite the dom and add hidden inputs, couldn't I just modify my xmlhttprequest wrapper to add a custom header with a unique id from the cookie? The header is then checked in the back end.

This would only require 1 line of extra code client side and is faster than rewriting the dom. It also means that if you have different panels of the admin section open in separate tabs then they all have the most recent id whenever you eventually submit them (which a dom rewrite onload may not and even though a dom rewrite onsubmit would it's less efficient). I regularly regenerate the session id so this is an issue for me.

If the user has javascript turned off, the js is incompatible with the browser or the js is just plain borked then the id will not be sent because there's no fall back, but that isn't a problem here since the admin section is private and for me only.

Does this method open any new holes that I haven't noticed?</description>
		<content:encoded><![CDATA[<p>In my admin section, the forms are submitted over xmlhttprequest. So instead of using javascript to rewrite the dom and add hidden inputs, couldn&#8217;t I just modify my xmlhttprequest wrapper to add a custom header with a unique id from the cookie? The header is then checked in the back end.</p>
<p>This would only require 1 line of extra code client side and is faster than rewriting the dom. It also means that if you have different panels of the admin section open in separate tabs then they all have the most recent id whenever you eventually submit them (which a dom rewrite onload may not and even though a dom rewrite onsubmit would it&#8217;s less efficient). I regularly regenerate the session id so this is an issue for me.</p>
<p>If the user has javascript turned off, the js is incompatible with the browser or the js is just plain borked then the id will not be sent because there&#8217;s no fall back, but that isn&#8217;t a problem here since the admin section is private and for me only.</p>
<p>Does this method open any new holes that I haven&#8217;t noticed?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wrc</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-12294</link>
		<dc:creator>wrc</dc:creator>
		<pubDate>Mon, 02 Apr 2007 15:29:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-12294</guid>
		<description>An attack using XMLHTTP to make the requests through the victim's browser against the desired site will only need an additional intermediate step.  Soley protecting POSTs won't help.</description>
		<content:encoded><![CDATA[<p>An attack using XMLHTTP to make the requests through the victim&#8217;s browser against the desired site will only need an additional intermediate step.  Soley protecting POSTs won&#8217;t help.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: beaule</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-12036</link>
		<dc:creator>beaule</dc:creator>
		<pubDate>Mon, 02 Apr 2007 07:18:33 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-12036</guid>
		<description>to pdp @ "XSS is a lot more dangerous then simple CSRF, which means that if you can get XSS then why the hell you would like to do CSRF"
--
why? it's very very simple, if a transfer application is CSRFable and XSSable, i will do an CSRF to retrieve money from the user to my account.
So even if my application is XSSable i will my transfer application totaly safe against CSRF...
That's why i think that a CSRF protection must be safe against XSS attack!</description>
		<content:encoded><![CDATA[<p>to pdp @ &#8220;XSS is a lot more dangerous then simple CSRF, which means that if you can get XSS then why the hell you would like to do CSRF&#8221;<br />
&#8211;<br />
why? it&#8217;s very very simple, if a transfer application is CSRFable and XSSable, i will do an CSRF to retrieve money from the user to my account.<br />
So even if my application is XSSable i will my transfer application totaly safe against CSRF&#8230;<br />
That&#8217;s why i think that a CSRF protection must be safe against XSS attack!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kanatoko</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-11839</link>
		<dc:creator>Kanatoko</dc:creator>
		<pubDate>Sun, 01 Apr 2007 13:10:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-11839</guid>
		<description>Hong 

I think that you are missing the point.
MHTML bug can be prevented at the server side as same as XSS.</description>
		<content:encoded><![CDATA[<p>Hong </p>
<p>I think that you are missing the point.<br />
MHTML bug can be prevented at the server side as same as XSS.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hong</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-11694</link>
		<dc:creator>Hong</dc:creator>
		<pubDate>Sun, 01 Apr 2007 07:45:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-11694</guid>
		<description>Kanatoko,
Because MHTML bug breaks the same origin policy. If you do not have any XSS flaw on site A, then you cannot access anything on site A, MHTML bug can make you able to access site A even if site A does not has any XSS flaw.</description>
		<content:encoded><![CDATA[<p>Kanatoko,<br />
Because MHTML bug breaks the same origin policy. If you do not have any XSS flaw on site A, then you cannot access anything on site A, MHTML bug can make you able to access site A even if site A does not has any XSS flaw.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kanatoko</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-11645</link>
		<dc:creator>Kanatoko</dc:creator>
		<pubDate>Sat, 31 Mar 2007 23:36:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-11645</guid>
		<description>&lt;blockquote&gt;the MHTML bug is more dangerous than XSS&lt;/blockquote&gt;

Interesting.  Why?

I think XSS( and Session  Hijack) is more dangerous than the MHTML bug because it can access to the response of POST.</description>
		<content:encoded><![CDATA[<blockquote><p>the MHTML bug is more dangerous than XSS</p></blockquote>
<p>Interesting.  Why?</p>
<p>I think XSS( and Session  Hijack) is more dangerous than the MHTML bug because it can access to the response of POST.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pagvac</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-11639</link>
		<dc:creator>pagvac</dc:creator>
		<pubDate>Sat, 31 Mar 2007 20:09:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-11639</guid>
		<description>owasp,

There is NO need to put the session IDs within URLs when following this approach. Just include the session ID within form fields that would be transmitted as a POST request, and *not* within URLs:

&lt;pre&gt;&lt;code&gt;&#60;form action=&#34;http://target/profile.do&#34; method=&#34;POST&#34;&#62;
&#60;input type=&#34;hidden&#34; name=&#34;name&#34; value=&#34;John&#34;/&#62;
&#60;input type=&#34;hidden&#34; name=&#34;lastname&#34; value=&#34;Dawson&#34;/&#62;
&#60;input type=&#34;hidden&#34; name=&#34;JSPSESSIONID&#34; value=&#34;7af7a55caff365ca594510586&#34;/&#62;
&#60;input type=&#34;submit&#34;/&#62;
&#60;/form&#62;&lt;/code&gt;&lt;/pre&gt;

Giorgio Fedon,

This might help if youâ€™re paranoid (disable autocomplete):

&lt;pre&gt;&lt;code&gt;&#60;input type=&#34;hidden&#34; name=&#34;JSPSESSIONID&#34; value=&#34;7af7a55caff365ca594510586&#34; autocomplete=&#34;off&#34;/&#62;&lt;/code&gt;&lt;/pre&gt;

But then again, if you can access the userâ€™s machine, you can also access the session ID cookies! Hopefully, the session ID expires after the idle session timeout ends.</description>
		<content:encoded><![CDATA[<p>owasp,</p>
<p>There is NO need to put the session IDs within URLs when following this approach. Just include the session ID within form fields that would be transmitted as a POST request, and *not* within URLs:</p>
<pre><code>&lt;form action=&quot;http://target/profile.do&quot; method=&quot;POST&quot;&gt;
&lt;input type=&quot;hidden&quot; name=&quot;name&quot; value=&quot;John&quot;/&gt;
&lt;input type=&quot;hidden&quot; name=&quot;lastname&quot; value=&quot;Dawson&quot;/&gt;
&lt;input type=&quot;hidden&quot; name=&quot;JSPSESSIONID&quot; value=&quot;7af7a55caff365ca594510586&quot;/&gt;
&lt;input type=&quot;submit&quot;/&gt;
&lt;/form&gt;</code></pre>
<p>Giorgio Fedon,</p>
<p>This might help if youâ€™re paranoid (disable autocomplete):</p>
<pre><code>&lt;input type=&quot;hidden&quot; name=&quot;JSPSESSIONID&quot; value=&quot;7af7a55caff365ca594510586&quot; autocomplete=&quot;off&quot;/&gt;</code></pre>
<p>But then again, if you can access the userâ€™s machine, you can also access the session ID cookies! Hopefully, the session ID expires after the idle session timeout ends.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pdp</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-11634</link>
		<dc:creator>pdp</dc:creator>
		<pubDate>Sat, 31 Mar 2007 19:03:47 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-11634</guid>
		<description>beaule,
again you are mixing too completely different problems: the first one is an a site being vulnerable to XSS and the second one a site being vulnerable to CSRF. XSS is a lot more dangerous then simple CSRF, which means that if you can get XSS then why the hell you would like to do CSRF. Use XMLHttpRequest and bring the user down to their knees.

Kanatoko,
the MHTML bug is more dangerous then XSS and CSRF, so your statement does not make sense at all. :) sorry!

Andy,
where exactly you are going to leak the token? We are not talking about freaking blogs man. We are talking about stuff like admin interfaces or interfaces that allows you to configure your profile or whatever. Otherwise CSRFs are pointless. These interfaces should not hold external links on the first place. I do agree that sometimes we are required to use GET but if you application does an operation over GET, something must be wrong with it. I am not saying that it is not common, all I am saying is that the idea is wrong.

The idea of this post was to show that CSRF attacks can be prevented in a very simple way without too much trouble. Still, it is possible to screw up with this implementation. However, I do use this prevention mechanism no matter what people are saying and it works very well. I do know about the dangerous of leaking your session ID in the URLs but that is a problem unless you don't know what you are doing. Look at all Google applications. The basic CSRF protection mechanism is in the URL. Can users leak that? Yes, it is possible. In theory, this means that if the user clicks on a link from an email and they arrive on some page, the browser may leak the token, right? This means that it could be possible for the website to perform CSRF, right? Well noooo, because Google does a good job to put all external links through their redirection script which eliminates all tokens from the URL.

To sum up:

&lt;div class="message"&gt;No matter what you do, whether you generate a token or you use the session cookie, and you use that in the GET, there is always a change leaking that on a 3rd-party organization. This means that unless you implement a unique key for every URL and form, you will be screwed. However, depending on the application the security level varies. If the application does not contains links to external sites, then the chances of leaking the session id are 0. Does routers have links to other sites apart from the vendor home page? Nope! This is exactly my point! If you have something like DIGG or Slashdot, you need to consider all possible ways of first of all preventing CSRF and second of all protecting the user tokens. This of course is completely different topic. This is all I am saying :)&lt;/div&gt;</description>
		<content:encoded><![CDATA[<p>beaule,<br />
again you are mixing too completely different problems: the first one is an a site being vulnerable to XSS and the second one a site being vulnerable to CSRF. XSS is a lot more dangerous then simple CSRF, which means that if you can get XSS then why the hell you would like to do CSRF. Use XMLHttpRequest and bring the user down to their knees.</p>
<p>Kanatoko,<br />
the MHTML bug is more dangerous then XSS and CSRF, so your statement does not make sense at all. :) sorry!</p>
<p>Andy,<br />
where exactly you are going to leak the token? We are not talking about freaking blogs man. We are talking about stuff like admin interfaces or interfaces that allows you to configure your profile or whatever. Otherwise CSRFs are pointless. These interfaces should not hold external links on the first place. I do agree that sometimes we are required to use GET but if you application does an operation over GET, something must be wrong with it. I am not saying that it is not common, all I am saying is that the idea is wrong.</p>
<p>The idea of this post was to show that CSRF attacks can be prevented in a very simple way without too much trouble. Still, it is possible to screw up with this implementation. However, I do use this prevention mechanism no matter what people are saying and it works very well. I do know about the dangerous of leaking your session ID in the URLs but that is a problem unless you don&#8217;t know what you are doing. Look at all Google applications. The basic CSRF protection mechanism is in the URL. Can users leak that? Yes, it is possible. In theory, this means that if the user clicks on a link from an email and they arrive on some page, the browser may leak the token, right? This means that it could be possible for the website to perform CSRF, right? Well noooo, because Google does a good job to put all external links through their redirection script which eliminates all tokens from the URL.</p>
<p>To sum up:</p>
<div class="message">No matter what you do, whether you generate a token or you use the session cookie, and you use that in the GET, there is always a change leaking that on a 3rd-party organization. This means that unless you implement a unique key for every URL and form, you will be screwed. However, depending on the application the security level varies. If the application does not contains links to external sites, then the chances of leaking the session id are 0. Does routers have links to other sites apart from the vendor home page? Nope! This is exactly my point! If you have something like DIGG or Slashdot, you need to consider all possible ways of first of all preventing CSRF and second of all protecting the user tokens. This of course is completely different topic. This is all I am saying :)</div>
]]></content:encoded>
	</item>
	<item>
		<title>By: Andy</title>
		<link>http://www.gnucitizen.org/blog/preventing-csrf/#comment-11625</link>
		<dc:creator>Andy</dc:creator>
		<pubDate>Sat, 31 Mar 2007 16:52:29 +0000</pubDate>
		<guid isPermaLink="false">http://www.gnucitizen.org/blog/preventing-csrf#comment-11625</guid>
		<description>My point was simply that fixing CSRF isn't a easy as the token, we might want to convert to POST, which in a large codebase can take a lot of time.

There are cases where we might want to still use GET for certain operations, and in those cases we just have to be careful to not leak the token via referer.

I don't worry about leaking the refer to proxy servers, because in cases where I'm really worried about preventing CSRF I'm going to be using SSL.</description>
		<content:encoded><![CDATA[<p>My point was simply that fixing CSRF isn&#8217;t a easy as the token, we might want to convert to POST, which in a large codebase can take a lot of time.</p>
<p>There are cases where we might want to still use GET for certain operations, and in those cases we just have to be careful to not leak the token via referer.</p>
<p>I don&#8217;t worry about leaking the refer to proxy servers, because in cases where I&#8217;m really worried about preventing CSRF I&#8217;m going to be using SSL.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
