はじめに
この記事は下記リンクの日本語翻訳記事です
翻訳が誤っている場合はコメントか@no1zy_secまでお知らせいただけると幸いです。
[valid_referers] none in valid_referers
ngx_http_referer_moduleモジュールは誤ったReferer
ヘッダの値でのクエストによるサービスへのアクセスをブロックすることができます。多くの場合はX-Frame-Options
ヘッダ(クリックジャッキングからの保護)の設定が使用されますが、それ以外の場合もあります。
このモジュールの設定に関する典型的な問題
-
server_name
ディレクティブでの不正なサーバー名の使用 - 広範囲すぎる、または不正確な正規表現
- noneの使用
none
がダメな理由
ドキュメントによると
the “Referer” field is missing in the request header;
訳:
リクエストヘッダにReferer
フィールドが無い
しかし、任意のリソースはユーザーのブラウザからReferer
ヘッダなしでリクエストできることを覚えておくことが重要です。
例えば:
- HTTPSからHTTPへのリダイレクトの場合
- Referer Policyを設定する
- 不透明なoriginを持つリクエスト
-
data:
スキームなど
-
したがって、有効なrefererとしてnoneを使用すると、任意のrefererのバリデーションが無効になります。
関連リンク
nginxの設定ミスで起こるHTTP Splitting
nginxの設定ミスで起こるSSRF
nginxの設定ミスで起こるパス トラバーサル
nginxの設定ミスで起こるMultiline response headers
nginxの設定ミスで起こるレスポンスヘッダの出力不備
nginxの設定ミスで起こるreferer/origin検証の問題
nginxの設定ミスで起こるHostヘッダフォージェリ