6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【Rails5.1】NginxでX-XSS-Protectionヘッダを指定するとChromeに怒られる

Posted at

発生した事象

セキュリティ対策としてNginxにX-XSS-Protectionヘッダを入れたが、Chromeの開発者ツールでエラーが出る。

環境

  • AWS
  • Ubuntu 16.04
  • Nginx
  • Unicorn 5.3.1
  • Rails 5.1
  • Ruby 2.4.1

エラー内容

Chromeの開発者ツールで以下のエラーが出ます。

Error parsing header X-XSS-Protection: 1; mode=block, 1; mode=block: expected semicolon at character position 14. The default protections will be applied.

原因

原因は、NginxとRailsアプリケーションで2重にヘッダを出力しているためでした。
以下のteratailの記事が参考になりました。
http通信ヘッダーエラー?

Railsセキュリティガイドによると、標準でX-XSS-Protectionヘッダを入れるとのことです。

Railsアプリケーションから受け取るすべてのHTTPレスポンスには、以下のセキュリティヘッダーがデフォルトで含まれています。

config.action_dispatch.default_headers = {
  'X-Frame-Options' => 'SAMEORIGIN',
  'X-XSS-Protection' => '1; mode=block',
  'X-Content-Type-Options' => 'nosniff'
}

確かに、Railsソースコードにも記載がありました。

27        "X-Frame-Options" => "SAMEORIGIN",
28	      "X-XSS-Protection" => "1; mode=block",
29	      "X-Content-Type-Options" => "nosniff",
30	      "X-Download-Options" => "noopen",

問題への処置

Nginxconfから、X-XSS-Protectionヘッダを外す。

おわりに

Qiitaでも、NginxとRailsのセキュリティに関するメモが記載されていますが、
Rails5.1では、'X-XSS-Protectionは不要です。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?