Este repositório fornece uma breve explicação sobre CSP e exemplos de sua implementação via html e arquivos de configuração de servidores web (apache e ngnix).
O CSP (Content Security Policy) nos permite definir regras de carregamento de recursos (css, js, img, etc) através de diretivas e com isso, reduzir os ricos de ataques via XSS. Essas regras podem ser definidas tanto via HTML quanto servidor (Apache, Nginx, etc).
As regras são configuradas a partir da combinação de diretivas e valores:
Ex: default-src 'self' https://cdnjs.cloudflare.com;
Aonde default-src
é a diretiva e 'self' https://cdnjs.cloudflare.com
são os valores.
No exemplo, a regra permite o carregamento de qualquer recurso, desde que tenham como origem o mesmo domínio ('self'
) ou da CDN do CloudFlare (https://cdnjs.cloudflare.com
).
Existem diretivas especificas para cada tipo de recurso:
Diretiva | Tipo de recurso |
---|---|
default-src | Todos os tipos de recurso |
script-src | Javascript |
style-src | CSS |
img-src | Imagens |
connect-src | Ajax |
font-src | Fontes |
form-action | Caminhos permitidos para o atributo action do elemento form |
media-src | Audios e vídeos |
plugin-types | MIME types do recurso, ex: application/pdf |
Mais detalhes: (https://content-security-policy.com)
Existem diretivas especificas para cada tipo de recurso:
Valor | Significado |
---|---|
* | Qualquer origem |
'none' | Nenhuma origem |
'self' | Da mesma origem |
'unsafe-inline' | Recursos em linha, ex: <style> , <script> |
https: | De origens seguras |
domain.example.com | Origem especifica |
Mais detalhes: (https://content-security-policy.com)
No HTML, as regras de carregamento podem ser definidas através de metatags <meta>
:
<meta http-equiv="Content-Security-Policy" content="default-src 'self';">
Veja os arquivos de código de exemplo neste repositório.
No servidor, podemos definir as regras de carregamento nos arquivos de configuração de acordo com o servidor web utilizado: Apache, Nginx, IIS, etc. Veja os arquivos de código de exemplo neste repositório.