4
2

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.

nginxの設定ミスで起こるreferer/origin検証の問題

Last updated at Posted at 2018-05-28

はじめに

この記事は下記リンクの日本語翻訳記事です

翻訳が誤っている場合はコメントか@no1zy_secまでお知らせいただけると幸いです。

[origins] nginxの設定ミスで起こるreferer/origin検証の問題

RefererOriginヘッダの検証に正規表現を使用するのは珍しいことではありません。よくX-Frame-Optionsヘッダ(クリックジャッキングの保護) または Cross-Origin Resource Sharing(CORS)を設定するために必要とされています。

この設定の最も一般的な間違い

  • 正規表現の間違い
  • サードパーティのオリジンを許可している

どうやって見つけるか

  1. $http_origin または $http_refererのチェックを担当している全てのifディレクティブを探し出してください。
  2. 正規表現が安全なことを確認してください。

設定ミスの例:

if ($http_origin ~* ((^https://www\.yandex\.ru)|(^https://ya\.ru)$)) {
	add_header 'Access-Control-Allow-Origin' "$http_origin";
	add_header 'Access-Control-Allow-Credentials' 'true';
}

対策

  • 正規表現を修正するか、正規表現の使用をやめる
  • Refererヘッダの検証に正規表現を使用する場合、ngx_http_referer_moduleを使用することができる場合があります。
  • 正規表現ではなくmapディレクティブを使用する方が優れている場合があります。

関連リンク

nginxの設定ミスで起こるHTTP Splitting
nginxの設定ミスで起こるSSRF
nginxの設定ミスで起こるパス トラバーサル
nginxの設定ミスで起こるMultiline response headers
nginxの設定ミスで起こるレスポンスヘッダの出力不備
nginxの設定ミスで起こるHostヘッダフォージェリ
nginxの設定ミスで起こるリファラの検証不備

4
2
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
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?