Content-Security-Policy (CSP) no es más que un header más (como X-XSS-Protection o X-Frame-Options) que ayuda a mejorar la seguridad de nuestro sitio web. Básicamente con CSP especificamos qué origen puede tener cada tipo de recurso servido en nuestra página.
CSP divide los tipos de recursos que puede cargar una web con una serie de directivas: default-src (por defecto), img-src (imágenes), font-src (fuentes), style-src (estilos), script-src (scripts), etc… en cada directiva especificamos el posible origen del recurso. Un ejemplo en Apache para un blog WordPress:
Header set Content-Security-Policy \ "default-src 'self' *.github.com *.wordpress.org secure.gravatar.com w.org s.w.org;\ font-src 'self' 'unsafe-inline' data: *.googleapis.com fonts.gstatic.com;\ style-src 'self' 'unsafe-inline' data: *.googleapis.com assets-cdn.github.com;\ media-src 'self' *.youtube-nocookie.com;\ frame-src 'self' *.youtube-nocookie.com;"
Un ejemplo en Nginx:
add_header Content-Security-Policy \ "script-src 'self' 'unsafe-inline' 'unsafe-eval' *.youtube.com *.googleapis.com *.google-analytics.com;\ frame-src 'self' *.youtube.com;\ font-src 'self' https://themes.googleusercontent.com;\ object-src 'self'";