in pulseapi/entries/views.py [0:0]
def post_validate(request):
"""
Security helper function to ensure that a post request is session, CSRF, and nonce protected
"""
user = request.user
csrf_token = False
nonce = False
if request.data:
csrf_token = request.data.get('csrfmiddlewaretoken', False)
nonce = request.data.get('nonce', False)
else:
csrf_token = request.POST.get('csrfmiddlewaretoken', False)
nonce = request.POST.get('nonce', False)
# ignore post attempts without a CSRF token
if csrf_token is False:
return "No CSRF token in POST data."
# ignore post attempts without a known form id
if nonce is False:
return "No form identifier in POST data."
# ignore post attempts by clients that are not logged in
if not user.is_authenticated:
return "Anonymous posting is not supported."
# ignore unexpected post attempts (i.e. missing the session-based unique form id)
if nonce != request.session['nonce']:
# invalidate the nonce entirely, so people can't retry until there's an id collision
request.session['nonce'] = False
return "Forms cannot be auto-resubmitted (e.g. by reloading)."
return True