<div dir="ltr">Matt,<br><br>An email is not a befitting format for a good answer. And, the documentation itself is actually really good, by comparison. Shockingly so for a framework, IMO. <a href="https://docs.djangoproject.com/en/dev/ref/contrib/csrf/">https://docs.djangoproject.com/en/dev/ref/contrib/csrf/</a><br>
<br>Notwithstanding…<br><br>1) XMLHttpRequests have already been covered by a previous <br>    post I believe. More info present in link provided above.<br><br>2) Secure by default - <br><br>Change CSRF_COOKIE_SECURE --> True<br>
<br>Change CSRF_COOKIES_HTTPONLY --> True<br><br>prefer middleware_class inclusion rather than  csrf_protect() <br>wrapping…discretionary application of the decorator pattern<br> <br>prefer RequestContext rather than manual import for the <br>
view handlers<br><br>3) Set CSRF_COOKIE_DOMAIN and understand limitations:<br><br><a href="https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#csrf-limitations">https://docs.djangoproject.com/en/dev/ref/contrib/csrf/#csrf-limitations</a><br>
<br>…there's more work to do:<br><br>4) Understand the scheme relies (only) on referrer checking to <br>     prevent MitM.<br><br>5) Django CSRF tokens have no (effective) expiry. Fixing this, <div>    I recall, requires a code customization.<div>
<br></div><div>As with any framework there are more positive/negative standards than this and the standards tend to be version-specific.</div><div><br></div><div style>Standard CSRF disclaimers would apply: do not rely on tokens for crossing privilege / sensitivity boundaries and so forth. </div>
<div><br></div><div>-jOHN<div style="color:rgb(0,0,0);font-family:Helvetica;font-size:medium"><span style="color:rgb(34,34,34);font-family:arial;font-size:small">-- </span><br style="color:rgb(34,34,34);font-family:arial;font-size:small">
<span style="color:rgb(34,34,34);font-family:arial;font-size:small">Phone: 703.727.4034</span><br style="color:rgb(34,34,34);font-family:arial;font-size:small"><span style="color:rgb(34,34,34);font-family:arial;font-size:small">Rss: </span><a href="http://feeds.feedburner.com/M1splacedOnTheWeb" target="_blank" style="font-family:arial;font-size:small">http://feeds.feedburner.com/M1splacedOnTheWeb</a><br>
</div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 16, 2013 at 11:53 AM, Matt Tesauro <span dir="ltr"><<a href="mailto:matt.tesauro@owasp.org" target="_blank">matt.tesauro@owasp.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div>While I'm up to my ears with Python at Rackspace & with OpenStack, I've not used Django for any of the code I've written recently - or actually ever.</div>
<div><br></div><div>
I'm got an  app which is basically using the Django CSRF protection as outlined here:</div><div><a href="https://docs.djangoproject.com/en/dev/ref/contrib/csrf/" target="_blank">https://docs.djangoproject.com/en/dev/ref/contrib/csrf/</a><br>

</div><div>for both "normal" web forms as well as AJAX calls.</div><div><br></div><div>I'm curious about anyone's experience with the Django CSRF protection, how well it works and any "gotchas", weakness or other issues with Django's CSRF protection.</div>

<div><br></div><div>List or direct replies appreciated.</div></div></blockquote></div></div></div></div></div>