web-dev-qa-db-ja.com

コンテンツセキュリティポリシースタイルハッシュ

次のようなラインスタイルのページにimgタグがあります。

style="height:50px;width:180px;display:block;"

Imgタグはサードパーティのコントロールによって生成されているため、外部スタイルシートに移動できません。そこで、Chrome開発者ツールに表示されるハッシュをコピーしました。

Content-Security-Policyの一部は次のようになります。

style-src 'self' 'sha256-7kYG54iPGE/Vf+GFqobEwpF9bfCAVA/elCz7OiSmMl0=';

しかし、Chromeは引き続き次のメッセージでブロックします:

Refused to apply inline style because it violates the following Content Security Policy directive: "style-src 'self' 'sha256-7kYG54iPGE/Vf+GFqobEwpF9bfCAVA/elCz7OiSmMl0='". Either the 'unsafe-inline' keyword, a hash ('sha256-7kYG54iPGE/Vf+GFqobEwpF9bfCAVA/elCz7OiSmMl0='), or a nonce ('nonce-...') is required to enable inline execution.

ポリシーのハッシュは、エラーメッセージの必要なハッシュと一致します。 Chromeがまだそれをブロックしているのはなぜですか?

ありがとう...

8
td48260

Chrome(Firefox以外))では、'unsafe-hashes'を明示的に許可する必要もあります。ハッシュだけを指定すると、スクリプトセクションとスタイルセクションにのみ適用され、属性には適用されないようです。 8.3。 "'unsafe-hashes'"の使用法 これで、CSPは次のよ​​うになります。

style-src 'self' 'unsafe-hashes' 'sha256-7kYG54iPGE/Vf+GFqobEwpF9bfCAVA/elCz7OiSmMl0=';

Chromeがこのように動作することを決定した理由)の詳細については、 このChromiumの問題 および このW3Cの問題 を参照してください。

6
Steffen Ullrich