2017-09-22 1 views
2

私は何もハンドラがデフォルトのアクションを防ぐために失敗した場合でも発生していないことを確認するContent-Security-Policyを通じてHTML要素の属性で `javascript:void(0)`を使用するにはどうしますか?

<form action="javascript:void(0)"> 

または

<a href="javascript:void(0)"> 

を行うことができるようにしたいです。 unsafe-evalに頼らずに、Content-Security-Policy HTTP応答ヘッダーを使用してこれを許可する方法を教えてください。

+1

なぜ、 'href ="# "'を使用しないのですか? – Barmar

+0

これは、防止されていないとページの先頭にジャンプするためです。 – Stephan

+1

ハンドラのどのブランチでも、そのアクション/ hrefをそこに置くのではなく、アクションを妨げることを確認する方が良いでしょう。 – apokryfos

答えて

0

組み込みイベントを削除してAJAX呼び出しに置き換えるのはどうですか?

https://www.w3schools.com/js/js_ajax_examples.asp

+0

OPは彼がすでにそれをしていることを意味します。彼はまた、ハンドラが失敗した場合のアクションをとにかく防ぐフェールセーフとしてそのアクション/ hrefを持っています。ここでの質問は、「コンテンツセキュリティポリシー」に関するもので、OPは「javascript:void(0)」をアクション/ hrefとして使用することはOKです。 – apokryfos

1

私はあなたが自分自身を否定あなたの質問を信じています。

は、どのように私はHTML要素で使用するためjavascript:void(0)は、Content-セキュリティポリシーを 属性ができますか?

は、一方では、あなたは、私は推測しているルールを指定するためにどのContent Security Policy (CSP)ヘッダーを設定script-srcです。インライン・スクリプトの実行を防ぐための指示。

一方、バイパスしてインラインJavaScriptを実行したいとします。

ヘッダーが期待どおりに機能していませんか?

'unsafe-inline'を追加すると、インラインスタイルとインラインスクリプト(CSPが提供する最大のセキュリティ上の勝利の1つ)を禁止する考えが否定されます。

nonce-sourceを使用すると、特定のインラインスクリプトブロックのみを許可できます。

例:

Content-Security-Policy: script-src 'nonce-2726c7f26c' 

注意、あなたは同様の要素に同じナンスを設定する必要があります。フォームを使用して、あなたのケースでは

<script nonce="2726c7f26c"> 
    var inline = 1; 
</script> 

は、ヘッダは次のようになります。

Content-Security-Policy: form-action 'nonce-<value>' 

また、あなたは、インラインスクリプトからハッシュを作成することができます。 CSPはsha256、sha384、sha512をサポートします。

例:

Content-Security-Policy: script-src 'sha256-076c8f1ca6979ef156b510a121b69b6265011597557ca2971db5ad5a2743545f' 

注意、ハッシュを生成するとき、先頭または末尾の空白を含め、その総額や空白文字の問題を、タグを含めると注意していないこと。

<script>var inline = 1;</script> 
+0

コンテンツセキュリティポリシーの使用許可されるものと許可されないものを指定できます。私は、javascriptのURLのこの特定のインスタンスがハッカーの攻撃の表面を減らすために、すべてのjavascriptのURLを許可せずに許可されるようにしたいと思います。 –

+0

だから基本的には私は 'script-source 'self'を持っていて、この単一のjavascriptのURLを許可するように変更したいと思います。 –

+0

@JonasBerlin CSPを使ってこの制限を回避する唯一の解決策は、 'unsafe-inline'。しかし、私はそれがCSPのアイデア全体を否定すると信じています。 –

関連する問題