The XSS Auditor refused to execute a script in~というエラーについて


こんなエラーがでた。

The XSS Auditor refused to execute a script in 'URL' because its source code was found within the request. The auditor was enabled as the server sent neither an 'X-XSS-Protection' nor 'Content-Security-Policy' header.

発生状況

とあるCMSで、登録したコンテンツの編集を行い、登録ボタンを押したとき、data:,というURLで真っ白な画面になる。

Consoleを見てみると、登録ボタンを押した時ではなく、画像のアップロードボタン・画像の取り消しボタンを押したときにエラーをはいている。

ちなみに、どの画像をアップロードしようとしてもダメで、他の投稿にアップロードすることは出来た。
画像を登録してから、コンテンツ内容を登録することは出来た。

よって、ある特定の条件でエラーが発生することを確認。

原因

調べたところ、GoogleChromeのXSS対策の仕様に関係しているみたいでした。
様々なところで、ChromeのXSSフィルターを無効化すれば良いように書かれていた。

しかし、フィルターを無効化していいのか判断が微妙…

このページを参考にしたら解決しました。

Google Chrome のXSS仕様にはまる。

どうも、<form>タグ関係の場合だけ、バグが出るという症状でした。

どんどん調べていくと、結論としては、Google ChromeのXSS対策の仕様?と判断しました。
正確にはプラグインの影響ではなく、そのプラグインの影響を可能にした場合の<form>タグ関連の影響でした。
(WordPressを一切使わず、シンプルなHTMLだけの場合でも試してみました)

これはプラグインうんぬんではなく、様々な場合に影響があると思っています。
(「投稿」や「固定ページ」等も含まれます。でも公開はできますが)

みたいです。

実際、コンテンツ内容に<form>が含まれていました。

解決方法

<form name="testform1" action="test1.html">
    <input type="text" name="text1" />
    <input type="text" name="text2" />
    <input type="submit" value="送信" />
</form>

<form name="testform1" action='test1.html'>
    <input type="text" name="text1" />
    <input type="text" name="text2" />
    <input type="submit" value="送信" />
</form>

にする。

( ゜Д゜)
って、感じだと思いますが、これで解決しました。

間違い探しが追いついていない方へ。

action="test1.html"action='test1.html'に変えたのです。

action="この並びがどうやらダメみたいです。

ダブルクォーテーションかシングルクォーテーションかでこんなに変わるとは・・・

抜本的な解決方法ではないかもしれませんが、今回みたいな場合は、これでokです!

システムとして作る場合は、しっかりとした対策を!