De mon point de vue, les technologies appelées Partage des ressources d'origine croisée (CORS) et Stratégies de sécurité du contenu (CSP) semblent être très similaires dans leur objectif et leur mise en œuvre.
Les deux semblent vous permettre de mettre en liste blanche les origines des ressources qu'une version sans compromis de votre page Web incorpore, via des en-têtes de réponse HTTP. La seule différence que je peux voir est que les CSP semblent être plus précis dans ce que vous pouvez approuver dans votre réponse HTTP.
CORS permet d'assouplir la même politique d'origine pour un domaine.
par exemple. normalement si l'utilisateur se connecte aux deux example.com
et example.org
, la même politique d'origine empêche example.com
de faire une AJAX à example.org/current_user/full_user_details
et accéder à la réponse.
Il s'agit de la politique par défaut du Web et empêche la fuite des données de l'utilisateur lorsqu'il est connecté à plusieurs sites en même temps.
Maintenant avec CORS, example.org
pourrait définir une politique pour dire qu'il autorisera l'origine https://example.com
pour lire les réponses faites par AJAX. Cela serait fait si les deux example.com
et example.org
sont gérés par la même entreprise et le partage de données entre les origines doit être autorisé dans le navigateur de l'utilisateur. Cela n'affecte que le côté client des choses, pas le côté serveur.
Les CSP, d'autre part, définissent une politique sur le contenu pouvant être exécuté sur le site actuel. Par exemple, si JavaScript peut être exécuté en ligne, ou quels domaines .js
les fichiers peuvent être chargés à partir de. Cela peut être utile pour agir comme une autre ligne de défense contre les attaques XSS , où l'attaquant tentera d'injecter un script dans la page HTML. Normalement la sortie serait encodée , cependant, dites que le développeur n'a oublié qu'un seul champ de sortie. Étant donné que la stratégie empêche l'exécution du script en ligne, l'attaque est contrecarrée.
CORS autorise un site A à autoriser le site B à lire les données (potentiellement privées) du site A (à l'aide du navigateur et des informations d'identification du visiteur).
CSP permet à un site d'empêcher lui-même de charger du contenu (potentiellement malveillant) à partir de sources inattendues (par exemple comme défense contre XSS).
Aucune des réponses ci-dessus ne donne une différence claire et concise entre CSP et CORS. Voici ma façon de penser à leur sujet:
Disons que nous avons abc.com site Web qui souhaite envoyer une demande à def.net.
CSP protège donc abc.com et la politique de même origine (le manque de CORS) protège def.net dans l'exemple ci-dessus.
CORS vérifie auprès du tiers l'autorisation d'utiliser ses services. Ainsi, le tiers fournit ou refuse l'autorisation.
Ainsi, par exemple, si une page de www.example.com doit faire une demande à www.example.org, nous devons envoyer une demande OPTIONS envoyée à www.example.org avec Origin: www.example.com comme précurseur de la demande pour autorisation. Maintenant, www.example.org fournit ou refuse l'autorisation.
CSP empêche une page Web de charger par inadvertance du contenu malveillant d'un tiers en spécifiant d'où un type particulier de contenu peut être chargé. Ainsi, par exemple, vous pouvez fournir une source valide pour chacun des scripts, css, médias, etc. suivants en utilisant des directives
Exemple:
Content-Security-Policy: default-src 'none'; script-src 'self' www.google-analytics.com ajax.googleapis.com; connect-src 'self'; img-src 'self'; style-src 'self';