こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

-広告-

解決済みの質問

.htaccessユーザ管理にCGIを使うには?

.htaccessを用いたアクセス制限をしようと思っています。
http://www.kent-web.com/pwd/pwmgr.html
を参考に作っています。この例だと、ユーザとパスワードの追加を行う管理者のパスワードを
/home/USER/public_html/pwmgr/init.cgi
というファイルの中に直に書き込んでいます。このpublic_htmlというディレクトリはweb からアクセスできるので、init.cgiというファイルをダウンロードされてしまうと、勝手にユーザ管理されてしまいますよね?
リモートログインができないレンタルサーバを使用していますが、ユーザ管理を厳重にするにはどうすればよいのでしょうか?
.htaccessで保護されているディレクトリに管理用CGIを置けばよいようにも思いますが。。。

投稿日時 - 2016-01-05 16:49:33

QNo.9106510

困ってます

質問者が選んだベストアンサー

「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段構えになりますので。

投稿日時 - 2016-01-09 21:35:31

お礼

大変詳細かつ、含蓄の深いご回答をありがとうございました。
cgiという拡張子が重要であることがわかりました。
KENTさんの本にも、ダウンロードされたくないファイルには拡張子cgiをつけるという方法が紹介されていました。
また、管理用CGIを.htaccessで保護されている場所においた方がよいこともわかりました。
今後ともよろしくお願い申し上げます。

投稿日時 - 2016-01-11 09:47:40

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

-広告-
-広告-

回答(1)

-広告-
-広告-

あなたにオススメの質問

-広告-
-広告-