Table of Contents
Content Security Policy
This feature was introduced in VuFind 7.0.
HTTP responses can include a Content Security Policy header which provides restrictions on the behavior of the client in order ot provide improved security. VuFind supports the creation of CSP headers to restrict web browser behavior and prevent common security vulnerabilities such as cross-site scripting.
You can learn more at the Mozilla Developer Resources pages about Content Security Policies and CSP Headers.
Configuring VuFind's CSP
All settings related to Content Security Policies can be found in contentsecuritypolicy.ini.
Enforcing vs. Reporting
The CSP can be configured to either block violating content, or simply to report problems. VuFind is set to reporting mode by default to avoid backward compatibility breaks.
When in reporting mode, you can set the report-to setting in contentsecuritypolicy.ini to send reports of violations to a URI that implements a simple API. VuFind does not currently include a built-in reporting endpoint, but several options exist, including:
- seek-oss/csp-server - an open source, Node.js-based solution
- ReportURI - a commercial, cloud-based service
- Sentry - a commercial, cloud-based service
All violations are usually reported in browser's console too, but it is preferable to set up some service to ensure you able to catch all issues your users could be facing.
Best Practices / Recommendations
Here are some tips and recommendations:
- By default, VuFind is set up to be fairly permissive about which scripts it will execute; if you are not using any options that rely on external scripts, or if you can reliably eliminate the use of non-HTTPS files, you should consider applying more restrictive settings than the defaults.
- By default, VuFind assumes that all CSS styles, images and fonts will be served up locally; if you are using any services (like Google fonts for example) or customizations that pull these resources in from third-party sites, you will need to set up more permissive settings.
- Consider setting up a reporting server (see tool options listed above) so you can test whether any pages of your site are violating your CSP; once you have determined that the site is working as expected, you should change 'enable' settings from 'report_only' to 'true' for your production site in order to improve security.