お世話になっております。
PHPにてwebアプリケーションを作っており、その中でMySqlなどのDBを使用せず、保存すべきデータは、テキストファイル(.txt)を用いているのですが、URLでそのテキストファイルを直接読み込むと、当然ながらファイルの内容を読まれてしまいますが、ファイルの内容を読まれないようにする設定などはあるのでしょうか?
具体的には・・
.txtではなく、他の拡張子に変更することで、.txt同様の構造が作れるのであれば、それに越したことないが、その場合、ファイルの生成・内容書込みなどを行うPHPのソースは、単に拡張子を変更するだけで良い?また、その.txtに代わる拡張子は?
.htaccessなどを用いてファイルの内容を外部から参照できなくする設定があると耳にしたことがあるが、読み書き可能としているファイル(属性606に設定)でも、.htaccessの設置は不具合はないのか?
などです。これまでファイルの読み込み・書込みなどをものは作成したことが無く、お恥ずかしい質問かと思いますが、アドバイスなど頂戴できれば幸いです。
お忙しい中恐縮ですが、宜しくお願い申し上げます。
No.8ベストアンサー
- 回答日時:
>ドキュメントルートしか利用できない場合の対処法
対処法は「ない」と考えてください。
厳密に言えば無いこともないですが、あなたのレベルでは無理です。付け焼き刃の対策をすると必ず危険な「穴」が発生します。ファイルの内容を「絶対に」読まれたくないのならば、ドキュメントルート外に置く以外の対処法はありません。
(※ドキュメントルート外に置いた場合でもまた別の危険の可能性はありますが、話が複雑になるのでここでは書きません)
ですから、私が既に書きましたように、privateディクレトリが使えるサーバーだけを使ってください。
nick9090さん、こんにちは。
お世話になっております。
はっきりとしたお答え、ありがとう御座います。
あれから、「どうしたものか?」と考えていたので、消去法として「消去法はない」として考えるようにいたします。
お返事が遅れて申し訳ありませんでした。(PCの調子が悪く、ネットに接続できなかった)
No.6
- 回答日時:
#4さん惜しい。
拡張子phpではなく、拡張子cgiですよね?
テキストファイルの拡張子をphpに変えても、"<?php"という文字(実際には"<?"でもOK)が入っていないと、スクリプトエンジンは処理せずにスルーされてしまいます。
結果、拡張子txtのときと同様、すべてブラウザに送られてしまいます。
1行目に"<?php"を入れる、データとして読み込むプログラムからは、1行目を無視して2行目からデータとして読み取る、と変更をすれば拡張子phpに変更して望みの事ができます。(普通わざわざそんな事しないですが)
拡張子をcgiに変えた場合、直接ファイルを指定して読み込もうとしても、Parlエンジン(通常は拡張子cgiはParlスクリプトと設定されています)がエラーで停止するだけなので、中身を読み取られることはありません。
簡易的な回避方法なので、業務でのプログラム作成であれば、必ずしもお勧めはできないですけど。(お客様に説明するために、なぜこのような拡張子なのか、将来に渡っても安全なのか、といった理論武装が必要になるでしょうね)
BellBellさんへ
こんにちは。ご親切なアドバイスをありがとう御座います。
ただいま、BellBellさんのご指摘のように、拡張子をcgiにして確認してみたところ、PHPプログラムにてデータを格納すべくcgiファイルを操作しようとしたところ、エラーとなってしまいました。
私、これまでcgiとは全くの無縁なのですが、cgiファイルを操作するに当たって、特別な記述やサーバーの設定(属性とか格納するディレクトリとか?)が必要なのでしょうか?
それと、データを格納すべくファイルの拡張子をphpとしたところ、確かにブラウザから中身を見ることが出来たのですが、これも全てではなく、見れるものと、見れないものがあることを確認いたしました。
多くの皆さんのアドバイスをいただきながら、解決できずに居る状況に恐縮ですが、宜しくお願い申し上げます。
No.5
- 回答日時:
私はロリポップを借りたことがないので実際に確かめたわけではないのですが、Googleで検索する限り、ロリポップではドキュメントルートより上にディレクトリを作ることが出来ないみたいですね。
http://www.google.co.jp/search?q=%E3%83%AD%E3%83 …
その場合でもいろいろやり方があるとは思いますが、やっぱり簡単かつ安全なのはpublicでなくprivateなディレクトリが使えるサーバーに乗り換えることですね。ちなみに私のオススメはxreaです。
nick9090さんへ
こんにちは。度重なるアドバイスをありがとう御座います。
私も、ロリポップのほか、エクスエリアを借りているのですが、ドキュメントルートしか使えない場合は、どうしたものか?と考えていた次第です。
検索までしていただき、ありがとう御座いました!
No.4
- 回答日時:
よくあるのが、テキストだけど拡張子をphpにするタイプですねー。
これだと、ざっくりとした説明ですが、、、テキストデータをサーバが、なに掲示板?日記?解釈したいんだけど、書式が違う!!とエラーになるので、中身は見られません。
これはプログラム内でtxtを検索して、拡張子を変える処理だけで平気です。
拡張子を変えると、winに読めなくなるよ?って怒られますが、中身はテキストなので、全く平気です。
ただし、プログラムによっては、データのバックアップ機能がついていると、ちょっと複雑になるので、素人が手を出すと、動かなくなったり、不具合が出る可能性もある。
他にも、cgiのcgiやplなんかも、表示の途中で処理が必要になるので、中身は見ることはできないと思うけど・・・。
下のお三方が、書かれていないとなると、何か特殊な方法を使えば、見られる・・・かな?
あ、ファイルの場所とファイル名が分かれば、外部からでも、テキストファイルを開くphpなら中身を見ることができますが・・・、データのフォルダ名を複雑にすれば、かなり分からないと思うけど。
ただ、サーバの設定によってはフォルダがみえちゃうけど、今や少数派でしょ。
この回答への補足
c_crimerさんへ
こんにちは。ご親切なアドバイスをありがとう御座います。
c_crimerさんのアドバイスをもとに、ソースの書き直しをしていたのでお返事が遅れてしまいました。
当初、私も拡張子をphpにすれば良いのかな・・とは思っていたのですが、「1行目と最終行に記述する<?phpと、?>の処理はどうしたら良いのだろう?」と考えていたのですが、これらの宣言?はなくてもファイルとして機能するのですね。勉強になりました。
が、しかし、#5のBellBellさんのご指摘があり、ブラウザにて該当ファイルを呼び出したところ、中身が見えてしまうものや、見えないものが確認出来ました。
どうしたものでしょうか・・・
No.3
- 回答日時:
> 通常、多く貸し出されている共有のレンタルサーバーなどにも、ドキュメントルーと以外のディレクトリは確保されているのでしょうか?
それはサーバー屋の設定とか使っているOSなどによって千差万別なので、決まった答えはありません。まあ普通はwwwとして公開されるディレクトリ以外のprivateなディレクトリもあると思いますが。
> 現在借りている共有のサーバーは、はじめてのサーバーだったことも手伝い、曖昧な記憶ながらにも、色々と変更しすぎて?ドキュメントルート以外のディレクトリがない状態となっています。
それはどのサーバー屋のどのプランですか?
それを書いてくれないと答えようがありません。
あと、Linuxのディレクトリ構成やapacheの設定などについて、軽く検索してまずは調べてみるといいでしょう。
nick9090さんへ
こんばんは。早速のお返事をありがとう御座います!
>それはどのサーバー屋のどのプランですか?
ロリポップを借りているのですが、ドキュメントルート以外のディレクトリの存在がった記憶ありですが、現在はドキュメントルートのみとなっているので、ドキュメント以外のディレクトリの認識が薄かったようです。
ところで、最後にもう一つお伺いしたいのですが、もし、ドキュメントルートしか使えないようなサーバーの場合、テキストファイルを閲覧できないような設定は、諦めるしかないのでしょうか?
もちろん、セキュリティを考えれば、nick9090さんの仰るとおり、ドキュメントルート以外で、privateなりのディレクトリを作成すべきなのでしょうが、もし、使えなかった場合の対処などがあったら、今後の知恵としてアドバイスいただければ幸いです。
お忙しい中、度々の質問で恐縮ですが、宜しくお願い申し上げます。
No.2
- 回答日時:
606などパーミッション云々を言う前に、そもそも公開されているディレクトリ(public_htmlなど)にそのファイルを置くこと自体が間違っています。
直接アクセスされたら困るようなファイルは、公開されていないディレクトリ(たとえばprivateなど)に置くべきです。
nick9090さんへ
こんばんは。早速のアドバイスをありがとう御座います。
お恥ずかしい質問、恐縮いたします。
ドキュメントルートから外して設置する認識が欠けていました。
先の#1さんへのお礼でも述べたのですが、通常、多く貸し出されている共有のレンタルサーバーなどにも、ドキュメントルーと以外のディレクトリは確保されているのでしょうか?
現在借りている共有のサーバーは、はじめてのサーバーだったことも手伝い、曖昧な記憶ながらにも、色々と変更しすぎて?ドキュメントルート以外のディレクトリがない状態となっています。
この場合の対処はともかく、通常貸し出されているサーバーのディレクトリ構成を教えて下されば幸いです。宜しくお願い申し上げます。
No.1
- 回答日時:
ブラウザからアクセスできない場所に.txtを作るというのはまずいのでしょうか?
wwwがドキュメントルートだとすると
環境によってパスが変わるのですが、
例えば
home/www/hoge.txt
↑ここだとブラウザからアクセスできてしまうので、
home/data/hoge.txt
(dataというフォルダは自分で作って下さい)
みたいな階層に、テキストファイルを置けばブラウザからは見えません。
honoka69さんへ
こんばんは。早速、かつご丁寧なアドバイスをありがとう御座います。
ドキュメントルートを変えればいいのですね・・。
確かに仰る通りでした。
そこで、再度お伺いしたいのですが、通常のレンタルサーバーなどには、ドキュメントルート以外のディレクトリ?は確保されているのでしょうか?
現在2社から共有のサーバーを借りしており、そのうちの一社は初めてサーバーということもあってか、右も左も分からず、気付いたらドキュメントルート以外のディレクトリがなくなっている状態でした。
以上、うろ覚えなのですが、ドキュメントルートが確保されていたのか、それとも初めからドキュメントルートしかなかったのかが分からず、ドキュメントルートから外してファイル等を設置する・・という認識が欠けていたのですが、再度、上記質問にお答えいただければ幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
fopenでファイルが開かない場合...
-
DLL のロードの順序
-
バッチを用いたフォルダの自動移動
-
Subversionのリポジトリの削除
-
VB.NET 最下位のディレクトリ名...
-
FTPでのファイルとディレクトリ...
-
FTPコマンドでディレクトリごと...
-
[ ディレクトリ '.' は書き込み...
-
makefile でファイルをコピーす...
-
PHPにおいてJAVAのWEB-INFに対...
-
CFileDialogの最初のディレクト...
-
preg_match関数で正規表現の複...
-
サーバー上のファイルコピー
-
チーム開発のデバッグ方法について
-
コマンドプロンプトを指定のデ...
-
visualstudioでc#のdllができない
-
ディレクトリ内のファイル名取得
-
phpのchmodで2775設定がうまく...
-
Rubyのスクリプト
-
このアクセス解析の設置ができ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチを用いたフォルダの自動移動
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
CFileDialogの最初のディレクト...
-
makefile でファイルをコピーす...
-
絶対パス?絶対アドレス?意味...
-
コマンドプロンプトを指定のデ...
-
VB.NET 最下位のディレクトリ名...
-
現在位置より2つ上のディレク...
-
Visual C++ 2005 Express Editi...
-
fopenでファイルが開かない場合...
-
renameでのPermission deniedエ...
-
MkDir関数
-
[ ディレクトリ '.' は書き込み...
-
visualstudioでc#のdllができない
-
powershell で書いたプログラム...
-
UWSCでファイルのアップロード...
-
DLL のロードの順序
-
JAVA内で複数のファイルを削除...
-
VB2008でFTPでのディ...
おすすめ情報