Syntaxe
<element ng-csp="no-unsafe-eval | no-inline-style"></element>
|
Paramètres
Nom |
Description |
element |
Ce paramètre permet d'indiquer une balise. |
no-unsafe-eval |
Ce paramètre permet d'indiquer que les styles eval n'est pas autorisés. |
no-inline-style |
Ce paramètre permet d'indiquer que les styles inline n'est pas autorisés. |
Description
Cette directive permet de changer la politique de sécurité du contenu.
Remarques
- Objectif principal : La directive ng-csp a été conçue pour permettre à AngularJS de fonctionner dans des environnements stricts où une politique de
sécurité de contenu (Content Security Policy, CSP) est appliquée. Ces politiques interdisent souvent l'utilisation de certaines fonctionnalités, comme les
eval() ou les inline styles/scripts, pour améliorer la sécurité des applications.
- Activation manuelle requise : L'utilisation de ng-csp doit être spécifiquement ajoutée sous la forme d'une directive dans l'attribut ng-app ou comme
attribut dans le HTML (<body ng-csp>). Cela permet à AngularJS de savoir qu'il doit adapter ses mécanismes internes pour être compatible avec CSP.
- Limitation des styles en ligne : Avec ng-csp, AngularJS évite d'utiliser des styles en ligne (inline styles) pour respecter les contraintes imposées
par les navigateurs utilisant CSP. Cela impacte certains comportements par défaut d'AngularJS, comme la gestion des classes
CSS appliquées dynamiquement.
- Impact sur les performances : Activer ng-csp peut légèrement réduire les performances des applications AngularJS. Par exemple, des fonctionnalités
comme le function caching (mémorisation des fonctions pour un accès rapide) sont désactivées pour contourner l'interdiction des évaluations de code dynamiques.
- Compatibilité rétroactive : La directive ng-csp a été introduite pour fournir une meilleure compatibilité avec les environnements exigeants en sécurité, mais
elle n'est pas nécessaire si CSP est configurée pour autoriser certains types de scripts, comme les sources sûres et les nonces.
- Usage restreint dans des environnements modernes : Avec l'évolution des pratiques de développement front-end et la transition vers des cadres d'applications modernes
comme Angular, l'usage d'AngularJS (et donc de ng-csp) devient de plus en plus rare. Cependant, dans les applications héritées, cette directive reste essentielle.
- Alternative au paramètre manuel : Plutôt que d'utiliser directement l'attribut ng-csp, vous pouvez activer CSP dans AngularJS en utilisant le module
de configuration JavaScript correspondant. Cela peut être utile pour une gestion centralisée et cohérente dans le code.
- Documentation et exemples : La documentation officielle d'AngularJS sur ng-csp recommande de tester les fonctionnalités dans un environnement CSP
avant de déployer en production. Cela permet de garantir que toutes les fonctionnalités AngularJS nécessaires fonctionnent correctement malgré les restrictions.
Dernière mise à jour : Dimanche, le 9 décembre 2018