質問

php5isapi.dll を使用した PHP 5.2.3 から、FastCGI と php-cgi.exe を使用した PHP 5.3.0 に移行しました。このサイトには、次のような Windows/ntlm/http 認証用のフックがあります。

if(empty($_SERVER["REMOTE_USER"]))
{
 header("HTTP/1.1 401 Unauthorized"); 
 exit;
}
$winuser = $_Server["REMOTE_USER"];

//parse $winuser to make sure it is on my domain, and can login to the site.
//set a cookie specifying that this user is logged in
//redirect to site.

これは、isapi を使用した PHP 5.2.3 環境でうまく機能しました。IIS6 の FastCGI に移行したところ、壊れてしまいました。私にとってはうまくいきますが、サーバーには管理者がいます。管理者のいない人 (ほとんどの人) には、次のようなバリエーションが表示されます。

FastCGI Error
The FastCGI Handler was unable to process the request. 
________________________________________
Error Details:
•   The FastCGI process exited unexpectedly 
•   Error Number: -1073741819 (0xc0000005). 
•   Error Description: Unknown Error 
HTTP Error 500 - Server Error.
Internet Information Services (IIS)

ドキュメントやログファイルを調べてみましたが、なかなか進まないようです。実際には、.php ファイルへのアクセスにリモート ユーザー名を使用したくないのですが、名前を取得してデータベースと照合したいだけです。実際の php 実行を行うのは anon ユーザーである必要があります。

手がかりはありますか?

役に立ちましたか?

解決

ある程度の進歩はありますが、根本的な解決にはまだ至っていません。

  1. ここのアドバイスに従うと役に立ちました。 FastCGI ドキュメント特に セキュリティに関する推奨事項 セクション。これにより、FASTCGI 500 からエラーが php エラー ログに記録されました。

  2. PHP/IIS/FastCGI は、anon ユーザーの代わりに認証を試みるユーザーを介してセッション ディレクトリ (私の場合は C:\PHP\Session) にアクセスしようとしているようです。

  3. そのフォルダーの「変更」権限を「すべてのユーザー」に設定すると、サイトが希望どおりに動作できるようになります。しかし、これを行うことでどのくらいの規模のセキュリティ ホールが発生するのか気になります...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top