O política de segurança de conteúdo spec tem sido uma ferramenta de segurança de front-end incrível para ajudar a evitar XSS e outros tipos de ataques. Eu diria até que todo site deve implementar a CSP mais específica possível. Se o senhor não estiver familiarizado com as CSPs, aqui está um exemplo rápido:
Content-Security-Policy: default-src 'self'; img-src *; media-src media1.com media2.com; script-src userscripts.example.com
Se um recurso ou conteúdo vinculado na página não for aprovado em uma determinada regra de CSP, ele não será carregado. É claro que é difícil fazer com que um site enorme seja aprovado em um CSP, basta perguntar ao Facebook:

Os navegadores fornecem informações sobre erros e avisos de CSP no console da Web, mas isso não ajuda os desenvolvedores a evitar problemas antes de colocá-los em produção. Entre seespee — um utilitário Node.js que permite que o senhor valide CSPs a partir da linha de comando!
Para obter as diretivas CSP de uma determinada página, basta executar seespee
com um URL:
seespee https://davidwalsh.name/demo/csp-example.php /* Content-Security-Policy: default-src 'self'; frame-ancestors 'self'; frame-src 'none'; img-src 'none'; media-src 'self' *.example.com; object-src 'none'; report-uri https://example.com/violationReportForCSP.php; script-src 'self' 'unsafe-inline' cdnjs.cloudflare.com; style-src 'self' 'unsafe-inline'; */
Se quiser validar a aprovação da CSP de uma determinada página, o que pode ser feito durante a compilação ou na CI, adicione o parâmetro --validate
:
seespee https://davidwalsh.name/demo/csp-example.php --validate /* ✘ ERROR: Validation failed: The Content-Security-Policy does not whitelist the following resources: script-src cdnjs.cloudflare.com; https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7/html5shiv.js */
Se a etapa de validação retornar um status diferente de zero, o senhor sabe que o CSP falhou e, portanto, o patch não deve ser mesclado.
O senhor também pode usar o seespee em seus scripts do Node.js:
var seespee = require('seespee'); seespee('https://davidwalsh.name/demo/csp-example.php').then(function(result) { console.log(result.contentSecurityPolicy); // default-src \'none\'; style-src https://assets-cdn.github.com; ... });
Ter um utilitário como o seespee e não precisar verificar manualmente no navegador é muito útil. Um CSP sólido pode ser difícil de criar, mas ainda mais difícil de manter à medida que o site muda. Use o seespee e o CI para evitar CSPs indesejados e falhas no site!