Maison > Article > interface Web > Politique de sécurité du contenu (CSP) en HTML5
Cordova不支持内联事件,所以点击事件必须提取到js里面. 以下是从官网摘抄下来,希望对您有所帮助
Pour atténuer un grand nombre de problèmes de scripts intersites potentiels, le système d'extension de Chrome a intégré le concept général de politique de sécurité du contenu (CSP). Cela introduit des politiques assez strictes qui rendront les extensions plus sécurisées par défaut et vous donneront la possibilité de créer et d'appliquer des règles qui régissent les types de contenu pouvant être chargés et exécutés par les extensions et les applications.
De manière générale, CSP agit comme un mécanisme de piratage/liste blanche pour étendre les ressources qu'un programme charge ou exécute. En définissant une politique judicieuse pour votre extension, vous pouvez examiner attentivement les ressources dont votre extension a besoin et demander au navigateur de garantir que ce sont les seules auxquelles votre extension peut accéder. Ces politiques assurent une sécurité au-delà des autorisations d'hôte demandées par votre extension ; elles constituent une couche de protection supplémentaire et non un remplacement.
Sur le Web, ces politiques sont définies via des en-têtes ou des éléments HTTP. Il n'existe pas non plus de mécanisme approprié dans le système d'extension de Chrome. Au lieu de cela, la politique d'une extension est définie via le fichier manifest.json de l'extension, qui ressemble à ceci :
{ … “content_security_policy”:“[POLICY STRING GOES HERE]” … }
Pour plus de détails sur la syntaxe CSP, consultez la spécification de la politique de sécurité du contenu et le "Contenu sur HTML5Rocks" " Article Introduction à la politique de sécurité".
Le package Manifest_version non défini n'a pas de politique de sécurité de contenu par défaut. Ceux qui choisissent manifest_version 2 ont la politique de sécurité du contenu par défaut :
script-src'self'; object-src'self'
Cette politique augmente la sécurité en restreignant les extensions et les applications de trois manières. Propriétés :
(1) L'évaluation et les fonctions associées sont désactivées
Le code suivant ne fonctionne pas :
alert(eval("foo.bar .baz"));
window.setTimeout(“alert(’hi’)”,10); window.setInterval(“alert(’hi’)”,10); new Function(“return foo.bar.baz”);
Évaluer une chaîne JavaScript comme celle-ci est un vecteur d'attaque XSS courant. Au lieu de cela, vous devez écrire du code comme ceci :
alert(foo && foo.bar && foo.bar.baz); window.setTimeout(function(){alert(’hi’);},10); window.setInterval(function(){alert(’hi’);},10); function(){return foo && foo.bar && foo.bar.baz};
(2) Le JavaScript en ligne ne sera pas exécuté
Le JavaScript en ligne ne sera pas exécuté. Cette restriction interdit les blocs en ligne et les gestionnaires d'événements en ligne (telles que ).
La première restriction élimine un grand nombre d'attaques de type cross-site scripting en vous empêchant d'exécuter accidentellement des scripts fournis par des tiers malveillants. Mais cela nécessite une séparation nette entre ce que votre code écrit et ce qu'il fait (ce que vous devriez certainement faire), n'est-ce pas ? Un exemple pourrait rendre cela plus clair. Vous pouvez essayer d'écrire une fenêtre contextuelle d'action de navigateur sous la forme d'un seul popup.html contenant :
<!doctype html> My Awesome Popup! function awesome(){ //做某事真棒! } function totalAwesome(){ //做某事真棒! } 函数clickHandler(element){ setTimeout( “awesome();getherAwesome()” ,1000); } function main(){ //初始化工作在这里。 } </ SCRIPT>Cliquez pour être génial !
(1) Scripts en ligne
Jusqu'à Chrome 45, il n'y avait aucun assouplissement des restrictions sur l'exécution du mécanisme JavaScript en ligne . En particulier, la définition d'une politique de script contenant « unsafe-inline » n'aura aucun effet. À partir de Chrome 46, il est possible de mettre sur liste blanche les scripts en ligne en spécifiant le hachage encodé en base64 du code source dans la politique. Le hachage doit être préfixé par l'algorithme de hachage utilisé (sha256, sha384 ou sha512).à propos des exemples
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!