8768 sujets

Développement web côté serveur, CMS

Bonjour,

L'intervention se Sepecat sur le sujet File_get_contents() pour page Web : page effectivement visitée ? m'a inspiré ce topic.

En effet, il y évoque l'utilisation d'une balise meta C.S.P. (Content Security Policy aka Politique de sécurité du contenu) quis e présente sous la forme:
<meta http-equiv="Content-Security-Policy" content="....._instructions_.....">


PS : Une alternative peut-être faite au sein du fichier de configuration du serveur. Présentement intéressons-nous au cas en Html.


Ce que je ne comprends est comment faire interpréter le css et le javascript inclus inline sans utiliser l'instruction 'unsafe-inline'.

Une bonne âme saurait-elle m'aiguiller à ce sujet ?

Voici ce que j'ai mis pour le moment:
 <head>
      <meta http-equiv="Content-Security-Policy" content="
        default-src 'self';
        child-src 'none';
        object-src 'none';
        script-src 'self' 'unsafe-inline' url_dun_prestataire.php;
        style-src 'self' 'unsafe-inline';
      ">
      <title></title>
<!-- le reste de mon code -->


Qu'aurais-je oublier ?
Greg_Lumiere a écrit :
Bonjour,

L'intervention se Sepecat sur le sujet File_get_contents() pour page Web : page effectivement visitée ? m'a inspiré ce topic.

En effet, il y évoque l'utilisation d'une balise meta C.S.P. (Content Security Policy aka Politique de sécurité du contenu) quis e présente sous la forme:
&lt;meta http-equiv="Content-Security-Policy" content="....._instructions_....."&gt;


PS : Une alternative peut-être faite au sein du fichier de configuration du serveur. Présentement intéressons-nous au cas en Html.


Ce que je ne comprends est comment faire interpréter le css et le javascript inclus inline sans utiliser l'instruction 'unsafe-inline'.

Une bonne âme saurait-elle m'aiguiller à ce sujet ?

Voici ce que j'ai mis pour le moment:
 &lt;head&gt;
      &lt;meta http-equiv="Content-Security-Policy" content="
        default-src 'self';
        child-src 'none';
        object-src 'none';
        script-src 'self' 'unsafe-inline' url_dun_prestataire.php;
        style-src 'self' 'unsafe-inline';
      "&gt;
      &lt;title&gt;&lt;/title&gt;
&lt;!-- le reste de mon code --&gt;


Qu'aurais-je oublier ?

Yo Greg... Je suis en ce moment en congés et réponds depuis un Smartphone. Pas facile, donc, de te passer tous les liens sur la question que j'avais pu visiter lorsque j'ai abordé CSP.
Je n'ai pas, hélas, de tête toutes les options de la balise META en question car les possibilités sont assez variées.
Ceci dit, j'essaierai de revenir sur ce sujet pour indiquer les liens en question et t'apporter des réponses complémentaires dès que je le pourrai.
Bien entendu, tout autre intervenant sur le forum peut apporter ses propres infos Smiley cligne
Merci Sepecat, de mon côté je bataille dur, j'ai du mal à comprendre.

D'autant plus que j'utilise un widget (dont je ne peux me passer) qui a la bonne idée d'inclure du style inline (grrr) et d'utiliser Jquery.

Bref, tout complément d'info est bienvenu.
Greg_Lumiere a écrit :
Merci Sepecat, de mon côté je bataille dur, j'ai du mal à comprendre.
D'autant plus que j'utilise un widget (dont je ne peux me passer) qui a la bonne idée d'inclure du style inline (grrr) et d'utiliser Jquery.
Bref, tout complément d'info est bienvenu.

Comme indiqué précédemment, voici l'url du site web à partir duquel je me suis documenté sur l'ajout de CSP dans les pages HTML.
Concernant l'insertion de style CSS "inline", ledit site indique, in extenso :
a écrit :
Inline style is treated in the same way: both the style attribute and style tags should be consolidated into external stylesheets to protect against a variety of surprisingly clever data exfiltration methods that CSS enables.
If you really, absolutely must have inline script and style, you can enable it by adding 'unsafe-inline' as an allowed source in a script-src or style-src directive. You can also use a nonce or a has (see below).

Plus bas, la partie relative aux scripts précise :
a écrit :
CSP Level 2 offers backward compatibility for inline scripts by allowing you to whitelist specific inline scripts using either a cryptographic nonce (number used once) or a hash. Although this may be cumbersome in practice, it is useful in a pinch.
To use a nonce, give your script tag a nonce attribute. Its value must match one in the list of trusted sources. For example:
<script nonce=EDNnf03nceIOfn39fn3e9h3sdfa>
  //Some inline code I cant remove yet, but need to asap.
</script>

Now, add the nonce to your script-src directive appended to the nonce- keyword.
Content-Security-Policy: script-src 'nonce-EDNnf03nceIOfn39fn3e9h3sdfa' 

Hashes work in much the same way. Instead of adding code to the script tag, create a SHA hash of the script itself and add it to the script-src directive.
Etc.

Si le style CSS inline n'est pas à ta main (généré par une extension), tu devrais pouvoir contourner le problème en recopiant ce style dans ta propre feuille CSS et en interdisant les styles "inline". En autorisant l'url de la feuille de style dans la balise CSP cela devrait fonctionner (à tester toutefois...).
Garder en mémoire aussi que CSP n'est pas implémenté de façon satisfaisante sur tous les navigateurs, même récents. Internet Explorer et Safari semblent être à la ramasse, tout du moins pour les spécifications CSP 2 (cf. Content Security Policy Reference).
Bonne continuation...
Modifié par sepecat (17 May 2016 - 21:28)