- ベストアンサー
.htaccessユーザ管理にCGIを使うには?
- .htaccessを用いたアクセス制限をしようと思っています。リモートログインができないレンタルサーバを使用していますが、ユーザ管理を厳重にするにはどうすればよいのでしょうか?
- http://www.kent-web.com/pwd/pwmgr.htmlを参考に、.htaccessユーザ管理を実装しようと思っています。しかし、ユーザ管理のためのCGIをダウンロードされてしまうと、勝手にユーザが管理される可能性があります。
- 管理用CGIを保護されたディレクトリに配置することで、ユーザ管理を厳重にする方法もあります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
「init.cgiというファイルをダウンロードされてしまうと」とありますが、これはどういう意味で書かれていますか? サーバーのセキュリティホールなどでサーバ上のcgiファイルの内容を読み取られるような状況を想定していますか? そうであれば「web からアクセスできるので」というのはほとんど関係ないかと思います。 そうではなく、漠然と「普通のファイル(htmlとかzipとか)をサーバからダウンロードするみたいにCGIファイルそのものもダウンロードされたら。。。」と考えているならば、それは単に知識が不足していることかと思います。 (Web関連を学び初めた頃の私自身がそんなかんじでしたが) 後者だとして続きを書きますが、 HTTPでクライアントからサーバにクリエストが行われる際、クライアントは基本的にはパスと要求方式(GET/POSTなど)をサーバに送ります。 (リクエストヘッダはその他いろいろありますが、この話の中ではあまり重要でありません。) 要は、クライアントは「ダウンロードアクセスする」とか「実行を要求する」とかを指定する要求の方法はありません。 サーバはリクエストを受けたら指定されたパスによって何を行うかを決定します。 (必ずしもサーバがそのパスをファイルパスとして解釈する限りません。解釈はサーバソフトウェア次第です。通常はいろいろ設定出来るようになっています) パスをファイルパスとして解釈する場合、多くのサーバソフトでは拡張子によって何をするかを決定します。 たとえばhtmlやzipであればファイルの内容を読み取ってクライアントに転送するとか、cgiであればそれを実行した結果(GCIからの標準出力への出力内容)をクライアントに転送するとか、です。 (いちおう補足を行って起きますが、JavaScriptの場合であればjsファイルをそのままダウンロードしてクライアントのブラウザ上で実行が行われますが、GCIはサーバ上で実行が行われてその出力結果をクライアントに転送します) 拡張子がcgiでも実行を行わずにそのファイル内容(ソースコード)をクライアントに転送するよう設定を行うこともできますが、あくまでサーバ側での話です。 cgiの内容が転送されるような設定ならば、そもそも誰も(管理者も)管理用CGIを実行出来ないでしょう。 (requireされるファイルの拡張子がcgiである必要はありませんが、参考にされているGCIのサイトの例でcgiとしているのはこのことが要因かと思います。つまり、cgiが実行出来る環境であればinit.cgiの場所に直接アクセスされても実行されてエラーになるだけですむ、ということでしょう) このあたりは、自分でApacheなどのサーバソフトをローカルPCにインストールして動かしてみると理解が深まるかと思います。 上記のことを理解した上でも、管理CGIを保護された場所に置くことは意味があると思います。 BASIC/Digest認証を通過したひとしかアクセスできなくすれば推測によるログイン試行されることもかなり減るでしょうし、2段構えになりますので。
お礼
大変詳細かつ、含蓄の深いご回答をありがとうございました。 cgiという拡張子が重要であることがわかりました。 KENTさんの本にも、ダウンロードされたくないファイルには拡張子cgiをつけるという方法が紹介されていました。 また、管理用CGIを.htaccessで保護されている場所においた方がよいこともわかりました。 今後ともよろしくお願い申し上げます。