# Content Security Policy HIdP comes with a strict Content Security Policy (CSP) to protect against cross-site scripting (XSS). If there is already a CSP implementation that sets the CSP header, this will not be overriden. In order for the CSP to properly work, make sure `hidp.csp` is in your INSTALLED_APPS: ```python INSTALLED_APPS = [ ... # Hello, ID Please "hidp.csp", ] ``` ## Decorator The CSP header is set on views that are decorated with the `hidp.csp.decorators.hidp_csp_protection` decorator and does not have the CSP header already set. The decorator also generates a `nonce` that is accessible in the request. All of HIdP's relevant views have been decorated with this decorator and it is possible to decorate your own views like this: ```python from django.utils.decorators import method_decorator from hidp.csp.decorators import hidp_csp_protection @method_decorator(hidp_csp_protection, name='dispatch') class MyCustomView(View): def get(self, request): ... ``` ## Template tag When you override templates and add scripts and/or styles, they will be blocked by the CSP by default. In order to allow them, the `nonce` attribute has to be added, which is available as a template tag; `hidp.csp.templatetags.csp_nonce`. Example use: ```html {% load csp_nonce %} ```