Perl についてお聞きします。前回に引き続き素朴な疑問です。


自分はよく、PerlでCGIプログラムを作って遊んでいます。そこでちょっとした疑問があります。

たとえば

例)http://www.test.com/uhihi.cgi

uhihi.cgiというCGIを作って、そのCGIが同じ階層に「data.txt」を作り出すことをよくやるのですが、ブラウザに直接

http://www.test.com/data.txt

と打ち込むと直接data.txtの中身を見ることができてしまいます。

こりゃイカンと思ってパーミッションをいろいろいじってみました。すると直接参照はできなくなったのでほっとしましたが、こんどはuhihi.cgiがdata.txtを参照できなくなりました。

たいしたデータではないので、そのままほっておいてるのですが、

「直接参照はできないが、中に置かれているCGIは自由にdata.txtをいじれる」

という状況を作り出すにはどうしたらいいのでしょうか?

回答の条件
  • URL必須
  • 1人20回まで
  • 登録:2007/09/21 19:21:15
  • 終了:2007/09/28 19:25:03

回答(4件)

id:samejima No.1

samejima回答回数92ベストアンサー獲得回数82007/09/21 19:39:24

ポイント23pt

data.txtをDocumentRoot外に置く。

URLはApacheの物ですが他のサーバーにも同様の設定はあります。

id:zachouR

なるほど!確かにそうすれば、見ることはできなくなりますね。

しかし、xreaなどのレンタルサーバーを借りている場合はどうでしょうか?

ドキュメントルート以外に保存する方法があるのでしょうか?

ありがとうございました

2007/09/21 19:53:31
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/09/21 19:58:38

ポイント23pt

xreaなどのレンタルサーバー

ふつうは教養サーバーでも public_html などのディレクトリ以下しか公開されないので、それ以外のディレクトリに配置すればいい。


XREA.COM

上記の「アップロードするディレクトリ」以外は Web から直接参照できないようになっている。

パーミッションさえ問題なければ CGI からはアクセスできるのでそうすることが推奨される。

id:zachouR

ありがとうございます。

XREAでいうと、一番上?public_htmlと同じ場所に「data」というフォルダを作ってそこに保存してみます。

2007/09/21 20:02:38
id:tsukis No.3

tsukis回答回数15ベストアンサー獲得回数22007/09/21 22:39:04

ポイント22pt

DocumentRootの外に置く以外では、

データ用のディレクトリを作り、その中に以下のようなhtaccessファイルを設置すれば、Webから直接参照はできないようになります。

<Files ~ "\.(dat|log|csv|txt)$">

deny from all

</Files>

このサンプルは、拡張子dat,log,csv,txtファイルを閲覧させないような設定です。

http://www.salut.ne.jp/wmh/seminar/sc006/index.html

id:zachouR

こういう方法もあるんですねー。

利便性を考えると、こちらのほうがいいような気がしてきました。

ありがとうございます

2007/09/22 23:03:00
id:tezcello No.4

tezcello回答回数459ベストアンサー獲得回数692007/09/22 00:01:44

ポイント22pt

Xrea なら、.htaccess が使えるののでは?

だったら、好きな所にディレクトリを作り、パーミッションを777にしておいて、そのディレクトリに以下を書いた .htaccess ファイルを置いたらどうでしょう。

Options none

deny from all

ウェブ経由のアクセスは全部拒否してくれる筈です。

http://q.hatena.ne.jp/1190370073

id:zachouR

ありがとうございます。

上記の方とどのあたりが違うのでしょうか?

さっそく試してみたいと思います。

2007/09/22 23:03:32
  • id:tezcello
    > 上記の方とどのあたりが違うのでしょうか?
    本質的には同じです。
    <Files ○○○>
    を使うと、○○○に該当するファイルのみが制限の対象です。

    3番の回答者さんも
    > このサンプルは、拡張子dat,log,csv,txtファイルを閲覧させないような設定です。
    と書いていらっしゃいますね。
    例えば、このディレクトリに test.gif が置いてあると、これはWebからのアクセス(閲覧)が可能です。

    Options none を書いているのは念の為です。
    上位のディレクトリで何か指定していた場合、それが継承されてしまうのを防ぐ為です。(Indexes とか)
    ファイル等を指定して制限していませんので、このディレクトリに対してのWeb からのアクセスは、全て拒否します。

    使い方に応じて、適している方をお使い下さい。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません