CGIで利用するファイルを直接見ることができないようにするには?

[上に] [前に] [次に]
つんつん [E-Mail] 2000/03/21(火) 16:53:11
CGIの勉強を始めて掲示板のプログラムを書いています。
CGIの中で書き込まれたログをbbs.datというファイルに
保存しているのですが、このファイルは
http://xxx.xxx.xxx.xxx/~username/bbs.dat
というようにブラウザから直接指定すると見ることが
出来てしまいます。これではパスワードとか保存するのに
非常に不安です。
今のところファイル名をでたらめな名前にすることしか
回避策が思い浮かびません。
何か良い方法があれば教えてください。

ウメボシ殿下 2000/03/21(火) 17:00:23
public_htmlの外に置く。

びーだま [E-Mail] 2000/03/21(火) 17:08:17
サーバーによって、設定が違うので、一概に、public_html が
あるとは、言えませんが、ウメボシ殿下 さんが言っていることは、
要するに、ドキュメントルート配下(Webに公開されているディ
レクトリ)からファイルを外すことですね。

プロバイダによっては、ログイン時のパスがそのまま、ドキュメント
ルートになっており、この外にファイルを置けないようになっている
場合もありますね。

そのようなときは、.htaccess などの設定ファイル(これは、Apacheの場合)にて、そのディレクトリをWebで閲覧できないようにして、
その中にファイルを入れておくということでも対応出来ます。

rakmn 2000/03/21(火) 17:19:11
単純な話、拡張子を「.cgi」にすればいいんじゃないでしょうか?

ふじ 2000/03/21(火) 17:29:58
Apache の場合、.htaccess で、
ForceType application/x-httpd-cgi
とするとか。
全てのファイルを CGI として実行しようとするので、
中身はみられません。

2000/03/21(火) 17:45:28
びーだま さんのに にてるけど
.htaccessでサーバ以外のIPを弾いたディレクトリにおけば良いのでは?

つんつん [E-Mail] 2000/03/22(水) 23:54:42
[[解決]]
色々なご意見ありがとうございました。
.htaccessの設定でうまくできました。

たれ 2000/03/23(木) 13:48:03
パーミッションを0600にしておけばブラウザからの閲覧にたいしては
Forbidden出してくれるはずです。

ふじ 2000/03/23(木) 14:56:23
> パーミッションを0600にしておけば
所有者以外見られなくなります。

CGIが所有者権限で動くなら良いですが、CGI が nobody で動いているサーバだと、
「ブラウザからは見えるけど、ユーザーアカウントで(FTPなどで)は見られない」
ことになりますよ。

たれ 2000/03/23(木) 15:01:50
>CGIが所有者権限で動くなら良いですが、CGI が nobody で動いているサーバだと、

ああ、なるほど。
そこまで頭が回りませんでした。失礼しました。
でも、許すならこっちが簡単ですよね。

[上に] [前に] [次に]