web-dev-qa-db-ja.com

VirtualHostsの内部または外部のディレクトリ?

DirectoryタグをVirtualHostsの内部と外部に配置することに違いはありますか?内部に同じディレクトリタグがあり、外部に同じディレクトリタグを持つ複数のVirtualHostを含む構成ファイルが見つかりました。したがって、この重複を取り除くことを考えていますが、関連するセマンティクスを完全には理解していません。

7
pupeno

<VirtualHost>内の<Directory>は、そのVHostを介してアクセスされた場合にのみ、そのディレクトリ内のファイルに適用されます。 <VirtualHost>の外にある<Directory>は常に適用されます(もちろん、<VirtualHost>または他の場所でオーバーライドされない限り)。

セキュリティの観点から、双方を議論することができます。別のVHost上のスクリプト間の予期しない相互作用により、<VirtualHost>内で構成するために、追加のアクセスレベル(AllowOverride all、f.ex。)がおそらく賢明です。 XSS攻撃を開始します。アクセスの制限(Deny from allAllow from 127.0.0.1)は、トップレベルのエイリアスやScriptAliasなどを介したバックドアがある場合に備えて、<VirtualHost>の外部でより意味があります。次に、非常に複雑な可能性があります。パフォーマンスやセキュリティ上の理由でスクリプトエンジンが無効になっているVHostがある可能性があるため、AllowOverride allのアクセス制限を強化する.htaccessはどこにありますか。しかし、通常は.htaccessで保護されている機密情報を含むファイルを公開するのはどれですか?

結局のところ、<Directory>を配置する場所は、重要度の高い順に3つの組み合わせになります。

  1. ポリシー-会社が常に<Directory>を<VirtualHost>内に配置する場合、ボートを揺さぶるのはほぼ間違いなく正しくありません。
  2. 読みやすさ— 600個のVHostがあり、それらすべてに同じ<Directory>スタンザが必要な場合は、ポリシーを破る価値があります。
  3. セキュリティ-いずれかのアプローチに明確なセキュリティ上の利点がある場合、それは デファクト 正しい選択、ポリシー、および読みやすさは損なわれます(ただし、ポリシーを破った理由と方法を文書化し、読みやすさを最大化するためにIncludeを使用するなどの対策を講じることをお勧めします)。
11
BMDan