1234567891011121314151617181920212223 |
- from misago.utils.strings import random_string
- class CSRFProtection(object):
- def __init__(self, csrf_token):
- self.csrf_id = '_csrf_token'
- self.csrf_token = csrf_token
-
- def request_secure(self, request):
- return request.method == 'POST' and request.POST.get(self.csrf_id) == self.csrf_token
- class CSRFMiddleware(object):
- def process_request(self, request):
- if request.user.is_crawler():
- return None
- if 'csrf_token' in request.session:
- csrf_token = request.session['csrf_token']
- else:
- csrf_token = random_string(16);
- request.session['csrf_token'] = csrf_token
-
- request.csrf = CSRFProtection(csrf_token)
|