web-dev-qa-db-ja.com

.htaccessとhttpd.confの両方でHTTP認証が無視されている

最近、ローカルコンピューター(Windows 10/Apache 2.4)の開発Webサイトの一部が、表示されるべきではないときにWebから表示されることを発見しました。問題は この質問 に似ていますが、解決策が提供されていないため(その投稿で尋ねられたすべての質問がチェックされ、正しいことが確認されています)、私は自分自身の質問をしています。関連するファイルからの関連する抜粋は次のとおりです。

httpd.conf:

# directory and file names obfuscated intentionally
<Directory "P:/HTTP/{hidden}"> 
  AllowOverride All
  AuthType Basic
  AuthName "Private Content - Authorized Use Only"
  AuthUserFile P:/.htpasswd
  Require valid-user
</Directory>

.htaccess(P:/ http/{hidden}内)

  AuthType Basic
  AuthName "You must log in to view this site."
  AuthUserFile P:/.htpasswd
  Require valid-user

(注:デバッグを支援するために、AuthNameエントリはそれぞれ異なる方法で設定されます)

エラーの原因となる行を追加するとエラーが発生するため、.htaccessファイルが処理されていることはわかっていますが、エラーが発生しない場合でも、HTTP認証ログインが表示されません。サイトが表示されます。これは、ローカルマシンだけでなく、サイトにアクセスしようとするすべてのコンピューターで発生します。ログファイルにエラーエントリがありません(.htaccessのガベージラインから生成された意図的なHTTP 500エラーを除く)、AllowOverrideALLに設定されています。上記の抜粋です。約2か月前にセキュリティテストを最後に行って以来、Apacheに最近の変更はありません。システムの唯一の変更はWindowsの更新によるものですが、それはこの問題とは関係がないはずです。

興味深いのは、この同じコンピューター上に複数のVMがあり、すべてが異なるOS/Apacheバージョンであり、それらはすべて同じドキュメントルート(ローカルボックス上のSAMBA共有)を指し、すべてが類似(または同一)であるということですそれぞれのApache構成ファイルのエントリ、およびそれらはすべて機能します。この問題を抱えているのはWin10ホストマシンだけです。

どんな提案や手がかりもありがたく受け取られます。

2
Dave Morton

これが私の.htaccessファイルの外観です(Apache 2.2)

AuthName "FBI only"
AuthUserFile /etc/Apache2/htpasswd-mysite
AuthType basic
Require valid-user
Order Deny,Allow
Deny from all
Allow from Ip.addr.here
Satisfy Any

私のサイトにIp.addr.hereからアクセスする場合、パスワードは必要ありません。

Apache構成ファイルに私は持っています

<Directory "/var/www/vhosts/site/www">
     Options            Indexes FollowSymLinks
     AllowOverride      All
     Order              allow,deny
     Allow              from all
</Directory>

だから、htaccessファイルにこれらの行を追加してみてください

Order Deny,Allow
Deny from all

編集

ご覧ください http://www.the-art-of-web.com/system/Apache-authorization/

そのリンクから:

従来の認証ディレクティブを使用してサーバーをアップグレードする場合は、Apacheでmod_access_compatを有効にする(デフォルトでアクティブにする必要があります)ことで、サーバーをすばやく機能させることができます。Sudo a2enmod access_compat

あなたの場合、そのモジュールが有効になっているかどうかを確認してください。

ここに役立つ情報があります。 https://www.digitalocean.com/community/tutorials/migrating-your-Apache-configuration-from-2-2-to-2-4-syntax

編集2

この関連する質問を参照してください そしてApacheログファイルをチェックしてください!

1
Guntis

与えられたすべての提案に従い(それらの提案に感謝します)、ここや他の場所に投稿された質問に答え、そして一般的に私が失う余裕がないほど欲求不満で髪を抜いた後、私は最終的に原因を見つけました問題の、したがって、解決策。すべての子フォルダーへのアクセスを許可していた祖先フォルダーに別の.htaccessファイルがあり、この「アップストリーム」.htaccessファイルが、変更を加えようとしたファイルの設定を上書きしていたことが判明しました。これは奇妙に思えます私にはわかりましたが、祖先の.htaccessの設定をコメントアウトすると、他のファイルが意図したとおりに機能し始めました。

ここで重要なのは、.htaccessファイルが計画どおりに機能していない場合は、親フォルダーを調べて、別のファイルの設定が異なるかどうかを確認することです。

0
Dave Morton