recursal/MDN huggingface dataset:
CSP: trusted-types
==================

La directive HTTP `Content-Security-Policy` (CSP) **`trusted-types`** 
Expérimental
 informe l'agent utilisateur qu'il faut restreindre la création de règles Trusted Types (fonctions qui créent des valeurs typées non falsifiables, dans le but de les passer au puits XSS du DOM au lieu de chaines de caractères).

Conjointement à la directive `require-trusted-types-for`, cette directive permet aux auteurs de définir des règles empêchant d'injecter des données dans le DOM et donc de réduire la fenêtre de tir pour les attaques XSS sur le DOM à quelques pans isolés de la base de code d'une application, facilitant donc son contrôle et sa relecture. Cette directive déclare une liste de permissions de noms de règles de Trusted Types créée avec `TrustedTypes.createPolicy` à partir de l'API Trusted Types.

Syntaxe
-------
```

Content-Security-Policy: trusted-types;
Content-Security-Policy: trusted-types 'none';
Content-Security-Policy: trusted-types <policyName>;
Content-Security-Policy: trusted-types <policyName> <policyName> 'allow-duplicates';
```


<nomRègle>

Un nom de règle est composé de caractères alphanumériques ou d'un ou plusieurs "`-#=_/@.%`". Une astérisque (`*`) comme nom de règle informe l'agent utilisateur d'autoriser tout nom de règle unique (quoique la valeur `'allow-duplicates'` pourrait permettre d'être plus laxiste à l'avenir).

`'none'`

Interdit la création de toute règle de Trusted Type (identique au fait de ne renseigner aucun nom de règle).

`'allow-duplicates'`

Autorise la création de règles dont le nom a déjà été utilisé.

Exemples
--------

Soit l'en-tête CSP :
```

Content-Security-Policy: trusted-types foo bar 'allow-duplicates';
```


Ce code génèrera une erreur car une des règles créées a un nom non autorisé :


```js
if (typeof trustedTypes !== "undefined") {
  const policyFoo = trustedTypes.createPolicy("foo", {});
  const policyFoo2 = trustedTypes.createPolicy("foo", {});
  const policyBaz = trustedTypes.createPolicy("baz", {}); // Throws and dispatches a SecurityPolicyViolationEvent.
}
```

Prothèse d'émulation
--------------------

Un prothèse d'émulation pour les Trusted Types est disponible sur Github.

Spécifications
--------------

| Specification |
| --- |
| Trusted Types # trusted-types-csp-directive |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Content-Security-Policy`
* Cross-Site Scripting (XSS)
* Prevent DOM-based cross-site scripting vulnerabilities with Trusted Types
* Trusted Types with DOMPurify XSS sanitizer
CSP : base-uri
==============

La directive HTTP `Content-Security-Policy` **`base-uri`** restreint les URL qui peuvent être utilisées comme valeur d'un élément `<base>`. Si cette valeur est absente, alors toutes les adresses sont autorisées. Si cette directive est absente, l'agent utilisateur utilisera la valeur de l'élément `<base>`.

|  |  |
| --- | --- |
| Version de CSP | 2 |
| Type de directive | Directive de document |
| Utilisation de `default-src` par défaut | Non, ne pas définir cette directive autorise toutes les URL |

Syntaxe
-------

Une ou plusieurs *sources* peuvent être autorisées pour cette directive :


```http
Content-Security-Policy: base-uri <source>;
Content-Security-Policy: base-uri <source> <source>;
```

### Sources

Cette directive utilise en grande partie les mêmes valeurs de source comme arguments que les autres directives CSP : valeurs sources pour CSP (en-US).

On notera toutefois que certaines de ces valeurs n'ont pas de sens pour `base-uri`, à l'instar des mots-clés `'unsafe-inline'` et `'strict-dynamic'`.

Exemples
--------

### Configuration avec la balise `<meta>`


```html
<meta http-equiv="Content-Security-Policy" content="base-uri 'self'" />
```

### Configuration avec Apache


```xml
<IfModule mod\_headers.c>
  Header set Content-Security-Policy "base-uri 'self'";
</IfModule>
```

### Configuration avec Nginx
```

add_header Content-Security-Policy "base-uri 'self';"
```

### Cas de violation

À partir du moment où votre domaine n'est pas `example.com`, un élément `<base>` avec son attribut `href` défini à `https://example.com` résultera en une violation de CSP.


```html
<meta http-equiv="Content-Security-Policy" content="base-uri 'self'" />
<base href="https://example.com/" />

<!--
Error: Refused to set the document's base URI to 'https://example.com/'
because it violates the following Content Security Policy
directive: "base-uri 'self'"
-->
```

Spécifications
--------------

| Specification |
| --- |
| Content Security Policy Level 3 # directive-base-uri |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Content-Security-Policy`
* `<base>`
* `Node.baseURI`
CSP : object-src
================

La directive HTTP `Content-Security-Policy` **`object-src`** spécifie les sources valides pour les éléments `<object>`, `<embed>` et `<applet>`.

Pour définir des types autorisés pour les éléments `<object>`, `<embed>` et `<applet>`, voir la directive `plugin-types`.

**Note :** Les éléments contrôlés par `object-src` sont considérés comme des éléments HTML historiques et qui ne recevront pas de nouvelles fonctionnalités standardisées (comme les attributs de sécurité `sandbox` et `allow` pour `<iframe>`). Ainsi, il est recommandé de restreindre cette directive en définissant `object-src 'none'`.


|  |  |
| --- | --- |
| Version de CSP | 1 |
| Type de directive | Directive de récupération |
| Utilisation de `default-src` par défaut | 
 Oui, si cette directive est absente, l'agent utilisateur consultera la
 directive `default-src`.
  |

Syntaxe
-------

Une ou plusieurs sources peuvent être autorisées pour cette directive :


```http
Content-Security-Policy: object-src <source>;
Content-Security-Policy: object-src <source> <source>;
```

### Sources

`<source>` peut être n'importe quelle valeur parmi celles énumérées dans l'article sur les valeurs sources CSP (en-US).

On notera que cet ensemble de valeurs peut être utilisé pour toutes les directives de récupération (et pour certaines autres directives (en-US)).

Exemples
--------

### Cas de violation

Soit cet en-tête CSP :


```http
Content-Security-Policy: object-src https://example.com/
```


Ces éléments `<object>`, `<embed>` et `<applet>` seront bloqués et ne se chargeront pas :


```html
<embed src="https://not-example.com/flash"></embed>
<object data="https://not-example.com/plugin"></object>
<applet archive="https://not-example.com/java"></applet>
```

Spécifications
--------------

| Specification |
| --- |
| Content Security Policy Level 3 # directive-object-src |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Content-Security-Policy`
* `<object>`, `<embed>` et `<applet>`
* `plugin-types`
CSP : script-src-attr
=====================

La directive HTTP `Content-Security-Policy` **`script-src-attr`** indique les sources valides pour les gestionnaires d'évènement déclarés dans le document HTML. Cela inclut les scripts déclarés à même les attributs comme `onclick`, mais pas les URL chargées directement par des éléments `<script>` (voir `script-src-elem` pour ces derniers).

|  |  |
| --- | --- |
| Version de CSP | 3 |
| Type de directive | Directive de récupération |
| Utilisation de `default-src` par défaut | Oui, si cette directive est absente, l'agent utilisateur consultera la directive `script-src`, qui a pour valeur par défaut celle de la directive `default-src`. |

Syntaxe
-------

Une ou plusieurs sources peuvent être autorisées pour cette directive :


```http
Content-Security-Policy: script-src-attr <source>;
Content-Security-Policy: script-src-attr <source> <source>;
```


`script-src-attr` peut être utilisée avec `script-src` :


```http
Content-Security-Policy: script-src <source>;
Content-Security-Policy: script-src-attr <source>;
```

### Sources

`<source>` peut être n'importe quelle valeur parmi celles énumérées dans l'article sur les valeurs sources CSP (en-US).

On notera que cet ensemble de valeurs peut être utilisé pour toutes les directives de récupération (et pour certaines autres directives (en-US)).

Exemples
--------

### Valeur par défaut avec `script-src`

Si la directive `script-src-attr` est absente, l'agent utilisateur se rabat sur la valeur de la directive `script-src`, qui elle-même a pour valeur par défaut celle de la directive `default-src`.

Spécifications
--------------

| Specification |
| --- |
| Content Security Policy Level 3 # directive-script-src-attr |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Content-Security-Policy`
* `<script>`
* `script-src`
* `script-src-elem`
CSP : prefetch-src
==================

La directive HTTP `Content-Security-Policy` **`prefetch-src`** spécifie les ressources pouvant être préchargées ou préaffichées.

|  |  |
| --- | --- |
| Version de CSP | 3 |
| Type de directive | Directive de récupération |
| Utilisation de `default-src` par défaut | Oui, si cette directive est absente, l'agent utilisateur consultera la directive `default-src`. |

Syntaxe
-------

Une ou plusieurs sources peuvent être autorisées pour cette directive :


```http
Content-Security-Policy: prefetch-src <source>;
Content-Security-Policy: prefetch-src <source> <source>;
```

### Sources

`<source>` peut être n'importe quelle valeur parmi celles énumérées dans l'article sur les valeurs sources CSP (en-US).

On notera que cet ensemble de valeurs peut être utilisé pour toutes les directives de récupération (et pour certaines autres directives (en-US)).

Exemple
-------

### Cas de violation

Soit cet en-tête CSP :


```http
Content-Security-Policy: prefetch-src https://example.com/
```


Les requêtes émises par ce code généreront des erreurs de réseau puisque les URL demandées ne correspondent pas à la liste de permissions de la directive `prefetch-src` :


```html
<link rel="prefetch" src="https://example.org/"></link>
<link rel="prerender" src="https://example.org/"></link>
```

Spécifications
--------------

#### No specification found

No specification data found for `http.headers.Content-Security-Policy.prefetch-src`.  
Check for problems with this page or contribute a missing `spec_url` to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Content-Security-Policy`
CSP: require-trusted-types-for
==============================

La directive HTTP `Content-Security-Policy` (CSP) **`require-trusted-types-for`** 
Expérimental
 directive informe l'agent utilisateur de contrôler les données passées au puits de fonctions XSS du DOM, tel que le mutateur Element.innerHTML.

Lors de leur usage, ces fonctions n'acceptent que des valeurs typées et non falsifiables créées par des règles de Trusted Type et rejettent les chaines de caractère. Conjointement à la directive **`trusted-types`**, qui empêche la création de règles de Trusted Type, cette directive permet aux auteurs de définir des règles empêchant d'écrire des données dans le DOM et donc de réduire la fenêtre de tir pour les attaques XSS sur le DOM à quelques pans isolés de la base de code d'une application, facilitant donc son contrôle et sa relecture.

Syntaxe
-------
```

Content-Security-Policy: require-trusted-types-for 'script';
```


`'script'`

Interdit l'usage de chaine de caractères avec les fonctions du puits d'injection XSS du DOM, et requiert que les types correspondant soient créés par des règles de Trusted Type.

Exemples
--------


```js
// Content-Security-Policy: require-trusted-types-for 'script'; trusted-types foo;

const attackerInput = '<svg onload="alert(/cross-site-scripting/)" />';
const el = document.createElement("div");

if (typeof trustedTypes !== "undefined") {
  // Create a policy that can create TrustedHTML values
  // after sanitizing the input strings with DOMPurify library.
  const sanitizer = trustedTypes.createPolicy("foo", {
    createHTML: (input) => DOMPurify.sanitize(input),
  });

  el.innerHTML = sanitizer.createHTML(attackerInput); // Puts the sanitized value into the DOM.
  el.innerHTML = attackerInput; // Rejects a string value; throws a TypeError.
}
```

Prothèse d'émulaiton
--------------------

Une prothèse d'émulation pour les Trusted Types est disponible sur Github.

Spécifications
--------------

| Specification |
| --- |
| Trusted Types # require-trusted-types-for-csp-directive |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Content-Security-Policy`
* Cross-Site Scripting (XSS)
* DOM XSS injection sinks covered by Trusted Types
* Prevent DOM-based cross-site scripting vulnerabilities with Trusted Types
* Trusted Types with DOMPurify XSS sanitizer
CSP : img-src
=============

La directive HTTP `Content-Security-Policy` **`img-src`** spécifie les sources valides d'images et d'icônes.

|  |  |
| --- | --- |
| Version de CSP | 1 |
| Type de directive | Directive de récupération |
| Utilisation de `default-src` par défaut | Oui, si cette directive est absente, l'agent utilisateur consultera la directive `default-src`. |

Syntaxe
-------

Une ou plusieurs sources peuvent être autorisées pour cette directive :


```http
Content-Security-Policy: img-src <source>;
Content-Security-Policy: img-src <source> <source>;
```

### Sources

`<source>` peut être n'importe quelle valeur parmi celles énumérées dans l'article sur les valeurs sources CSP (en-US).

On notera que cet ensemble de valeurs peut être utilisé pour toutes les directives de récupération (et pour certaines autres directives (en-US)).

Exemples
--------

### Cas de violation

Soit cet en-tête CSP :


```http
Content-Security-Policy: img-src https://example.com/
```


Cet élément `<img>` sera bloqué et ne se chargera pas :


```html
<img src="https://not-example.com/toto.jpg" alt="image d'exemple" />
```

Spécifications
--------------

| Specification |
| --- |
| Content Security Policy Level 3 # directive-img-src |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Content-Security-Policy`
* `<img>`
CSP : style-src-attr
====================

La directive HTTP `Content-Security-Policy` **`style-src-attr`** spécifie les sources valides pour des feuilles de styles appliquées à des éléments individuels du DOM par l'attribut `style`.

|  |  |
| --- | --- |
| Version de CSP | 3 |
| Type de directive | Directive de récupération |
| Utilisation de `default-src` par défaut | Oui, si cette directive est absente, l'agent utilisateur consultera la directive `style-src`, qui a pour valeur par défaut celle de la directive `default-src`. |

Syntaxe
-------

Une ou plusieurs sources peuvent être autorisées pour cette directive :


```http
Content-Security-Policy: style-src-attr <source>;
Content-Security-Policy: style-src-attr <source> <source>;
```


`style-src-attr` peut être utilisée avec `style-src` :


```http
Content-Security-Policy: style-src <source>;
Content-Security-Policy: style-src-attr <source>;
```

### Sources

`<source>` peut être n'importe quelle valeur parmi celles énumérées dans l'article sur les valeurs sources CSP (en-US).

On notera que cet ensemble de valeurs peut être utilisé pour toutes les directives de récupération (et pour certaines autres directives (en-US)).

Spécifications
--------------

| Specification |
| --- |
| Content Security Policy Level 3 # directive-style-src-attr |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Content-Security-Policy`
* `style-src`
* `style-src-elem`
* L'en-tête `Link`
* `<style>`, `<link>`
* `@import`
* `CSSStyleSheet.insertRule()` (en-US)
* `CSSGroupingRule.insertRule()` (en-US)
* `CSSStyleDeclaration.cssText`
Feature-Policy: accelerometer
=============================

**Expérimental:** **Cette fonction est expérimentale**  
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.  
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

La directive `accelerometer` de l'en-tête HTTP `Feature-Policy` contrôle la possibilité pour le document courant de recueillir des informations à propos de l'accélération de l'appareil au moyen de l'interface `Accelerometer` (en-US).

Syntaxe
-------


```http
Feature-Policy: accelerometer <allowlist>;
```


`<allowlist>`

Une liste d'origines pour lesquelles la fonctionnalité est autorisée. Voir `Feature-Policy`.

Règle par défaut
----------------

Pour cette fonctionnalité, la valeur par défaut pour `allowlist` est `'self'`.

Spécifications
--------------

| Specification |
| --- |
| Generic Sensor API # permissions-policy |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* L'en-tête `Feature-Policy`
* Règles de gestion pour les fonctionnalités (*Feature Policy*)
* Utiliser `Feature-Policy`
Raison : l'en-tête CORS « Access-Control-Allow-Origin » est manquant
====================================================================

Message
-------


```http
Raison : l'en-tête CORS « Access-Control-Allow-Origin » est manquant
```


En anglais :


```http
Reason: CORS header 'Access-Control-Allow-Origin' missing
```

Quel est le problème ?
----------------------

La réponse à la requête CORS ne contient pas l'en-tête requis `Access-Control-Allow-Origin`, dont la fonction est de déterminer si le domaine à l'origine de la requête est autorisé à accéder à cette ressource.

Si vous avez le contrôle du serveur, vous pouvez ajouter l'origine de la requête à la liste des domaines autorisés à accéder aux ressources du serveur en l'ajoutant aux valeurs de l'en-tête `Access-Control-Allow-Origin`.

Par exemple, pour autoriser le site `https://amazing.site` à accéder aux ressources avec CORS, l'en-tête doit être comme suit :


```http
Access-Control-Allow-Origin: https://amazing.site
```


Vous pouvez aussi configurer le serveur pour autoriser tous les domaines à accéder aux ressources avec le caractère générique `*`. Ceci ne devrait être utilisé que pour des API publiques. Les API privées ne devraient jamais utiliser `*`, et devraient à la place utiliser un domaine ou un ensemble de domaines. De plus, l'astérisque ne fonctionne que pour les requêtes ayant `anonymous` comme valeur pour l'attribut `crossorigin` ; il empêche également l'envoi d'identifiants (par exemple des cookies) dans une requête.


```http
Access-Control-Allow-Origin: \*
```


**Attention :** Autoriser n'importe quel site à accéder à une API privée est une mauvaise idée.

Pour autoriser n'importe quel site à faire des requêtes CORS *sans* utiliser le caractère générique `*` (par exemple, pour fournir des authentifiants), votre serveur doit lire la valeur de l'en-tête `Origin` de la requête et l'utiliser dans `Access-Control-Allow-Origin`, tout en ajoutant un en-tête `Vary: Origin` pour indiquer que certains en-têtes sont définis dynamiquement selon leur origine.

L'instruction exacte pour définir les en-têtes dépend de votre serveur web. Par exemple, dans Apache, ajoutez une ligne comme celle qui suit à la configuration du serveur (dans la section appropriée `<Directory>`, `<Location>`, `<Files>`, ou `<VirtualHost>`). La configuration se trouve généralement dans un fichier `.conf` (`httpd.conf` et `apache.conf` sont des noms couramment attribués à ces fichiers) ou dans un fichier `.htaccess`.
```

Header set Access-Control-Allow-Origin 'origin-list'
```


Avec Nginx, la commande pour mettre en place cet en-tête est :
```

add_header 'Access-Control-Allow-Origin' 'origin-list'
```

Voir aussi
----------

* Les erreurs relatives au CORS
* Glossaire : CORS
* Introduction au CORS
Raison : l'en-tête CORS « Access-Control-Allow-Origin » ne correspond pas à « xyz »
===================================================================================

Message
-------


```http
Raison : l'en-tête CORS « Access-Control-Allow-Origin » ne correspond pas à « xyz »
```


En anglais :


```http
Reason: CORS header 'Access-Control-Allow-Origin' does not match 'xyz'
```

Quel est le problème ?
----------------------

L'origine de la demande ne correspond à aucune des origines autorisées par l'en-tête `Access-Control-Allow-Origin`. Cette erreur peut également se produire si la réponse contient plus d'un en-tête `Access-Control-Allow-Origin`.

Si vous contrôlez le serveur auquel votre code accède via une requête CORS, assurez-vous qu'il soit configuré pour mentionner votre origine dans son en-tête `Access-Control-Allow-Origin`, et qu'un seul en-tête de ce type est fourni dans les réponses et qu'il contient une seule origine.

Par exemple, dans Apache, ajoutez une ligne comme celle qui suit à la configuration du serveur (dans la section appropriée `<Directory>`, `<Location>`, `<Files>`, ou `<VirtualHost>`). La configuration se trouve généralement dans un fichier `.conf` (`httpd.conf` et `apache.conf` sont des noms couramment attribués à ces fichiers), ou dans un fichier `.htaccess`.
```

Header set Access-Control-Allow-Origin 'origin'
```


Pour Nginx, la commande pour mettre en place cet en-tête est :
```

add_header 'Access-Control-Allow-Origin' 'origin'
```

Voir aussi
----------

* Les erreurs relatives au CORS
* Glossaire : CORS
* Introduction au CORS
* Activer CORS : je souhaite activer la prise en charge du CORS sur mon serveur (en anglais)