Esta traducción está incompleta. Por favor, ayuda a traducir este artículo del inglés.
Hay varios ámbitos de las políticas que pueden ser definidas por los administradores de las páginas web usando las Normas de Seguridad de Contenido o CSP por sus siglas en ingles. Cualquier combinación de estas políticas puede ser utilizada para satisfacer las necesidades de su sitio web, no es necesario especificar todas ellas..
Fuentes de contenido
La mayoría de las políticas directivas necesitan de una o más fuentes de contenido. Una fuente de contenido es una cadena que indica una posible fuente de donde el contenido puede ser descargado.
Listas de fuentes
Una lista de fuentes es un cadena que especifica uno o más hosts de internet o direcciones IP, así como un esquema de URL opcional y/o número de puerto. La dirección del sitio puede incluir un comodín líder (el carácter asterisco, '*'
), y puedes usar un comodín (de nuevo, '*'
) como el número de puerto, indicando que todos los puertos legales son válidos para la fuente. Los hosts son delimitados por espacio.
Las expresiones validas del host son:
- https://*.foo.com
- Junta todos los intentos de carga desde cualquier subdominio de foo.com usando el sistema URL http:.
- mail.foo.com:443
- Junta todos los intentos de acceso al puerto 443 en mail.foo.com.
- https://store.foo.com
- Junta todos los intentos para acceder store.foo.com usando https:.
Si un número de puerto no está especificado, el navegador usara el número de puerto predeterminado para el sistema especificado. Si no hay sistema especificado, el mismo sistema que ha sido usado para acceder al documento protegido será usado.
Palabras claves
También existen algunas palabras claves disponibles para describir clases especiales de fuentes de contenido. Estas palabras son las siguientes:
'none'
- Se refiere al conjunto vacío, es decir, no hay URLs que coincidan. Las comillas simples son necesarias.
'self'
- Se refiere al origen del cual los documentos protegidos están siendo enviados, incluyendo el mismo sistema de URL y numero de puerto. Las comillas simples deben ser incluidas. Algunos navegadores excluyen específicamente
blob
yfilesystem
de las políticas directivas. Sitios que necesitan permitir este tipo de contenido puede especificarlos usando el Data attribute. 'unsafe-inline'
- Permite el uso de recursos alineados como elementos alineados
<script>
,javascript:
URLs, controladores de eventos alineados e elementos alineados<style>
. Las comillas simples deben ser incluidas. 'unsafe-eval'
- Permite el uso de
eval()
y métodos similares para la creación de códigos desde las cadenas de caracteres. Las comillas simples deben ser incluidas.
Ejemplo, puedes especificar que el contenido sea cargado desde el origen del documento, así como desde trustedscripts.foo.com de la siguiente manera:
Content-Security-Policy: default-src 'self' trustedscripts.foo.com
Data
- data:
- Permite que
data:
URIs sea usada como fuente de contenido. Esto es inseguro y un atacante puede insertar data: URIs arbitrarias. Utilízala con moderación y definitivamente no para los scripts. - mediastream:
- Permite que
mediastream:
URIs sea usada como fuente de contenido. - blob:
- Permite que
blob:
URIs sea usada como fuente de contenido. - filesystem:
- Permite que
filesystem:
URIs sea usada como fuente de contenido.
Content-Security-Policy: default-src 'self'; img-src 'self' data: blob: filesystem:; media-src mediastream:
Políticas directivas soportadas
Las siguientes políticas directivas están disponibles para controlar la política de seguridad para varias ares de las políticas.
base-uri
La directiva >base-uri
define las URLs que un agente usuario puede usar como el documento URL base. Si este valor no está presente, cualquier URL está permitido. Si esta directiva no está presente, el agente usuario usara el valor en el elemento base.
base-uri source-list
child-src
La directiva child-src
define las fuentes válidas para los trabajadores de la web y contextos de navegación anidados cargados utilizando elementos tales como <frame>
y <iframe>
. Esta opción es preferida sobre la directiva frame-src
,
la cual es obsoleta. Para los trabajadores, las
solicitudes no conformes son tratadas como errores de red fatales por el agente usuario.
default-src.
child-src source-list
connect-src
La directiva connect-src
define fuentes válidas para fetch, XMLHttpRequest, WebSocket y conecciones EventSource.
default-src.
connect-src
source-list
default-src
La directiva por defecto default-src
define la política de seguridad para los tipos de contenidos que no están expresamente señalados por otras directivas. Esta directiva abarca las siguientes directivas:
child-src
connect-src
font-src
img-src
media-src
object-src
script-src
style-src
default-src
source-list
font-src
La directivas font-src
especifica las fuentes válidas para los tipos de letras cargadas usando @font-face
.
default-src.
font-src
source-list
form-action
La directiva form-action
especifica criterios de valoración válidos para las sumisiones <form>
.
form-action
>source-list
frame-ancestors
La directiva frame-ancestors
especifica padres validos que pueden incustrar una pagina usando elementos <frame>
y <frame>
. Esta directiva no esta soportada en el elemento <meta>
o por la cabecera Content-Security-Policy-Report-Only.
frame-ancestors
source-list
frame-src
The frame-src
directive specifies valid sources for web workers and nested browsing contexts loading using elements such as ><frame>
and <iframe>
.>
child-src
instead.frame-src source-list
img-src
The img-src
directive specifies valid sources of images and favicons.
default-src
directive.img-src
source-list
manifest-src
The manifest-src
directive specifies which manifest can be applied to the resource.
default-src
directive.manifest-src
source-list
media-src
The media-src
directive specifies valid sources for loading media using the <audio>
and <video>
elements.
default-src
directive.media-src
source-list
object-src
The object-src
directive specifies valid sources for the <object>
, <embed>
, and <applet>
elements.
default-src
directive.object-src
source-list
plugin-types
The plugin-types
directive specifies the valid plugins that the user agent may invoke.
plugin-types type-list
referrer
The referrer
directive specifies information in the referrer header for links away from a page.
referrer value
reflected-xss
The reflected-xss
directive instructs a user agent to activate or deactivate any heuristics used to filter or block reflected cross-site scripting attacks. Valid values are allow
, block
, and filter
. This directive is not supported in the <meta>
element.
meta
element.reflected-xss value
report-uri
The report-uri
directive instructs the user agent to report attempts to violate the Content Security Policy. These violation reports consist of JSON documents sent via an HTTP POST
request to the specified URI. See Using CSP violation reports for details. This directive is not supported in the <meta>
element.
report-uri
uri
sandbox
The sandbox
directive applies restrictions to a page's actions including preventing popups, preventing the execution of plugins and scripts, and enforcing a same-origin policy. This directive is not supported in the <meta>
element or by the Content-Security-policy-Report-Only
header field.
sandbox value
script-src
The script-src
directive specifies valid sources for JavaScript. When either the script-src
or the default-src
directive is included, inline script and eval()
are disabled unless you specify 'unsafe-inline' and 'unsafe-eval', respectively.
default-src
directive.script-src
source-list
style-src
The style-src
directive specifies valid sources for stylesheets. This includes both externally-loaded stylesheets and inline use of the <style>
element and HTML style
attributes. Stylesheets from sources that aren't included in the source list are not requested or loaded. When either the style-src
or the default-src
directive is included, inline use of the <style>
element and HTML style
attributes are disabled unless you specify 'unsafe-inline'.
default-src
directive.style-src
source-list
report-uri
as the content being protected by Content Security Policy.upgrade-insecure-requests
The upgrade-insecure-requests
directive instructs user agents to treat all of a site's unsecure URL's (those serverd over HTTP) as though they have been replaced with secure URL's (those served over HTTPS). This directive is intended for web sites with large numbers of unsecure legacy URL's that need to be rewritten.
Specifications
Specification | Status | Comment |
---|---|---|
Upgrade Insecure Requests | Working Draft | Adds upgrade-insecure-requests . |
Content Security Policy Level 2 | Candidate Recommendation | Adds base-uri , child-src , form-action , frame-ancestors , plugin-types , referrer , reflected-xss , and report-uri . Deprecates frame-src . |
Content Security Policy 1.0 | Candidate Recommendation | Defines connect-src , >default-src , >font-src , >frame-src , >img-src , >media-src , >objects-src , >report-uri,>sandbox , >script-src, and >style-src .> |
Browser compatibility
Feature | Chrome[2] | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support |
14.0 (X-Webkit-CSP) 25.0 |
4.0 (2.0) (X-Content-Security-Policy) 23.0 (23.0) |
Edge | 15 |
6 (X-Webkit-CSP) 7 |
base-uri |
40.0 | 35.0 (35.0) | ? | ? | ? |
child-src |
40.0 | 23.0 (23.0) | ? | ? | ? |
connect-src |
(Yes) | 23.0 (23.0) | ? | ? | ? |
default-src |
(Yes) | 23.0 (23.0) | ? | ? | ? |
font-src |
(Yes) | 23.0 (23.0) | ? | ? | ? |
form-action |
40.0 | 36.0 (36.0) | ? | ? | ? |
frame-ancestors |
40.0 | 33.0 (33.0) | ? | ? | ? |
frame-src |
(Yes) | ? | ? | ? | ? |
img-src |
(Yes) | 23.0 (23.0) | ? | ? | ? |
manifest-src |
(Yes) | 41.0 (41.0) | ? | ? | ? |
media-src |
(Yes) | 23.0 (23.0) | ? | ? | ? |
object-src |
(Yes) | 23.0 (23.0) | ? | ? | ? |
plugin-types |
40.0 | Not supported | ? | ? | |
referrer |
(Yes) | 37.0 (37.0) | ? | ? | ? |
reflected-xss |
(Yes) | Not supported | ? | ? | ? |
report-uri |
40.0 | ? | ? | ? | ? |
sandbox |
(Yes) | ? | ? | ? | ? |
script-src |
(Yes) | 23.0 (23.0) | ? | ? | ? |
style-src |
(Yes) | 23.0 (23.0) | ? | ? | ? |
|
43.0 |
42.0 (42.0) | ? | ? | ? |
Feature | Android Browser[1] | Android Webview[2] | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Mobile[2] |
---|---|---|---|---|---|---|---|
Basic support | (Yes) | (Yes) | 4.0 (2.0) | ? | ? | iOS 7.1 | (Yes) |
base-uri |
Not supported | 40.0 | 35.0 (35.0) | ? | ? | ? | 40.0 |
child-src |
Not supported | 40.0 | Not supported | ? | ? | ? | 40.0 |
connect-src |
? | (Yes) | Not supported | ? | ? | ? | (Yes) |
default-src |
? | (Yes) | Not supported | ? | ? | ? | (Yes) |
font-src |
? | (Yes) | Not supported | ? | ? | ? | (Yes) |
form-action |
Not supported | 40.0 | 36.0 (36.0) | ? | ? | ? | 40.0 |
frame-ancestors |
Not supported | 40.0 | 33.0 (33.0) | ? | ? | ? | 40.0 |
frame-src |
? | (Yes) | Not supported | ? | ? | ? | (Yes) |
img-src |
? | (Yes) | Not supported | ? | ? | ? | (Yes) |
manifest-src |
? | ? | 41.0 (41.0) | ? | ? | ? | ? |
media-src |
? | (Yes) | Not supported | ? | ? | ? | (Yes) |
object-src |
? | (Yes) | Not supported | ? | ? | ? | (Yes) |
plugin-types |
Not supported | 40.0 | Not supported | ? | ? | ? | 40.0 |
referrer |
? | (Yes) | 37.0 (37.0) | ? | ? | ? | (Yes) |
reflected-xss |
? | (Yes) | Not supported | ? | ? | ? | (Yes) |
report-uri |
Not supported | 40.0 | Not supported | ? | ? | ? | 40.0 |
sandbox |
? | (Yes) | Not supported | ? | ? | ? | (Yes) |
script-src |
? | (Yes) | Not supported | ? | ? | ? | (Yes) |
style-src |
? | (Yes) | Not supported | ? | ? | ? | (Yes) |
upgrade-insecure-requests |
42.0 (42) | 43.0 | Not supported | ? | ? | ? | 43.0 |
Notes
[1] Deprecated since Android 4.0.
[2] Starting with version 45.0, Chrome excludes blob
and filesystem
from source directives. Sites needing to allow these content types can specify them using the Data attribute.