2017-10-23 15 views
0

CSPの設定に問題があります。私は私のページにアニメーションを実装するためのsnap.svg.js libを接続しました。このライブラリは、私のアニメーションをたくさんのインラインスタイルにしています(私のsvgには約2000+です)。だから私はこのような'unsafe-inline'を指定しない場合:
...
...
"style-src 'unsafe-inline'; "
を、私は、コンソールでの違反の多くを持っています。しかし、私はセキュリティの面でインラインスタイルを許可したくありません。 snap.svg.js lib形式で生成されたインラインスタイルのみを表示するにはどうすればよいですか?
私のCSP(唯一のテストのレポート):CSP 3でナンスでコンテンツセキュリティポリシーの競合

$csp = "Content-Security-Policy-Report-Only: " 
    . "default-src 'self' http://gc.kis.v2.scr.kaspersky-labs.com ; " 

    . "font-src 'self' https://fonts.googleapis.com https://fonts.gstatic.com data: ; " 

    . "script-src 'self' 'sha256-4B8QbxkufkPFIEFoveWSoiyIpMLitEc/N9oopV9wrU4=' 'sha256-KoZvlNi6WIlva5SMPsgkZKuz3pwSCUhpugmi7saPqak=' ; " 

    . "style-src 'self' https://fonts.googleapis.com ; " 

    . "img-src 'self' http://1.gravatar.com ; "; 
header($csp); 

答えて

0

あなたが他のスクリプトによってロードされたスクリプトに信頼を伝播することができますが、私はスクリプト nonceがに任意のメソッドを持っているとは思いませんスタイルに伝播します。あなたがする必要があるだろう何

は次のようになり、次のいずれか

  1. アルターライブラリ(EEK)が追加されますすべてのインラインスタイルにnonceを追加します。また、CSPと生成されたページの両方にノンスがなければなりません。これは最良の解決策ですが、実装が最も難しいです。
  2. 各インラインスタイルにSHAハッシュを使用します。これは面倒で実用的ではありませんが、予測可能なインラインスタイルがいくつかしかない場合は、ノンスの実装を完全に行うことやセキュリティを弱めることなく、離れさせることができます。
  3. unsafe-inlineを使用してください。明らかに理想的ではありませんが、Javascriptや他のアクティブなコンテンツがロックされている限り、CSPをまったく使用しない方が良いでしょう。スタイルは、より危険なものの1つですが、script-srcとおそらくはobject-srcの危険に惑わされません。

あなたの状況に最も適したものはどれですか。最初にSHAハッシュメソッドを試して、必要なハッシュ数を正確に確認します。彼らが完全にオンザフライで作られている場合、それらの数十を持っているそれはおそらくうまくいっていないでしょう。

残念ながら私の経験では、ほとんどのサードパーティ製のライブラリはCSPを念頭に置いて作成されておらず、それを扱うのが困難または不可能です。これはおそらくライブラリ/ CDNs/etcがCSPをサポートすることが期待され、我々は頭痛を覚え続けるでしょう。