1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
import json
import sys
from django.http import HttpResponse
from django.middleware.csp import get_nonce
from django.utils.csp import CSP
from django.utils.decorators import method_decorator
from django.views.debug import technical_500_response
from django.views.decorators.common import no_append_slash
from django.views.decorators.csp import csp_override, csp_report_only_override
from django.views.decorators.csrf import csrf_exempt
from django.views.generic import View
def empty_view(request, *args, **kwargs):
return HttpResponse()
@no_append_slash
def sensitive_fbv(request, *args, **kwargs):
return HttpResponse()
@method_decorator(no_append_slash, name="dispatch")
class SensitiveCBV(View):
def get(self, *args, **kwargs):
return HttpResponse()
def csp_nonce(request):
return HttpResponse(get_nonce(request))
@csp_override({})
def csp_disabled_enforced(request):
return HttpResponse()
@csp_report_only_override({})
def csp_disabled_ro(request):
return HttpResponse()
@csp_override({})
@csp_report_only_override({})
def csp_disabled_both(request):
return HttpResponse()
csp_policy_override = {
"default-src": [CSP.SELF],
"img-src": [CSP.SELF, "data:"],
}
@csp_override(csp_policy_override)
def csp_override_enforced(request):
return HttpResponse()
@csp_report_only_override(csp_policy_override)
def csp_override_report_only(request):
return HttpResponse()
@csp_override(csp_policy_override)
@csp_report_only_override(csp_policy_override)
def csp_override_both(request):
return HttpResponse()
def csp_500(request):
try:
raise Exception
except Exception:
return technical_500_response(request, *sys.exc_info())
csp_reports = []
@csrf_exempt
def csp_report_view(request):
if request.method == "POST":
data = json.loads(request.body)
csp_reports.append(data)
return HttpResponse(status=204)
|