From aa00aada82af2a18f277a7490716d6b8cee36212 Mon Sep 17 00:00:00 2001 From: Nobuo Kihara Date: Tue, 31 Jan 2017 17:52:35 +0900 Subject: [PATCH] docs/guide-ja/security-best-practices.md updated [ci skip] (#13481) --- docs/guide-ja/security-best-practices.md | 43 ++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/docs/guide-ja/security-best-practices.md b/docs/guide-ja/security-best-practices.md index 06e8baa7a9..57de68dff6 100644 --- a/docs/guide-ja/security-best-practices.md +++ b/docs/guide-ja/security-best-practices.md @@ -227,3 +227,46 @@ H5BP プロジェクトが提供する構成例を参考にすることも出来 - [Apache](https://github.com/h5bp/server-configs-apache). - [IIS](https://github.com/h5bp/server-configs-iis). - [Lighttpd](https://github.com/h5bp/server-configs-lighttpd). + +サーバの構成をセキュアにする +---------------------------- + +この節の目的は、Yii ベースのウェブサイトをホストするサーバの構成を作成するときに、 +考慮に入れなければならないリスクに照明を当てることにあります。 +ここで触れられる問題点以外にも、セキュリティに関連して考慮すべき構成オプションがあるかもしれません。 +この節の説明が完全であるとは考えないで下さい。 + +### `Host` ヘッダ攻撃を避ける + +[[yii\web\UrlManager]] や [[yii\helpers\Url]] のクラスは、リンクを生成するために [[yii\web\Request::getHostInfo()|現在リクエストされているホスト名]] を使うことがあります。 +って +ウェブサーバが `Host` ヘッダの値とは無関係に同じサイトとして応答するように構成されている場合は、 +この情報は [HTTP リクエストを送信するユーザによって偽装され](https://www.acunetix.com/vulnerabilities/web/host-header-attack) て、信頼できないものになっている可能性があります。 +そのような状況においては、ウェブサーバの構成を改修して、指定されたホスト名に対してのみ応答するようにするか、 +または、`request` アプリケーションコンポーネントの [[yii\web\Request::setHostInfo()|hostInfo]] プロパティを設定して、ホスト名の値を設定ないしフィルタするか、 +どちらかの対策を取るべきです。 + +サーバの構成についての詳細な情報は、ウェブサーバのドキュメントを参照して下さい。 + +- Apache 2: +- Nginx: + +サーバの構成にアクセスする権限がない場合は、このような攻撃に対して防御するために、[[yii\filters\HostControl]] フィルタを設定することが出来ます。 + +```php +// ウェブアプリケーション構成ファイル +return [ + 'as hostControl' => [ + 'class' => 'yii\filters\HostControl', + 'allowedHosts' => [ + 'example.com', + '*.example.com', + ], + 'fallbackHostInfo' => 'https://example.com', + ], + // ... +]; +``` + +> Note: 「ホストヘッダ攻撃」に対する保護のためには、常に、フィルタの使用よりもウェブサーバの構成を優先すべきです。 + [[yii\filters\HostControl]] は、サーバの構成が出来ない場合にだけ使うべきものです。