例えば、データベースを呼び出すときのユーザー名やパスワードを、そのまま外部から閲覧できるファイルに書いておくと危ないから、別のファイルにして呼び出すようにするというのは初心者用の教科書にも書いてありますよね。
例えば、PHPでいうとrequire_once()なんかで呼び出したり。
その呼び出すファイルは別のディレクトリに入れておいて、そのディレクトリにアクセス制限をかけることになると思いますが、その方法がはっきりしなくて困っています。
検索してみると、.htaccessに書いて制限するという方法がたくさん出てくるんですが、その説明の中で気になるのが「ブラウザではアクセスできなくなる」というもの。
例えば
Order Deny,Allow
Deny from all
と書けば、ブラウザのURL欄でファイルを指定しても見られなくなりますよね。
これだと誰もアクセスできないけど、PHPとかスクリプトからは読み出せるので、そういうファイルを保存するのによく使われてるなんて書かれてました。
でも、プログラム上から読み出せるなら、よそのサーバーからそういうプログラム書いてアクセスされたら読まれちゃうんじゃないの?と不安になります。
理想としては、同じサーバーもしくはドメイン上のHTMLやPHPなどからは読み込めて、それ以外のファイルからはブラウザだろうがプログラムだろうがアクセスできない、という形ですが、そういうことはできるもんなんでしょうか?
上記の.htaccessを使った方法で充分?
もし他にやり方があれば、ぜひご教授下さい。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
> でも、プログラム上から読み出せるなら、よそのサーバーからそういうプログラム書いてアクセスされたら読まれちゃうんじゃないの?と不安になります。
この不安は、「プログラムがよそのサーバーにアクセスしてファイルを読み込む」ということがどういうことなのかちゃんと具体的にイメージできてないことからきているのだと思います。
プログラムがよそのサーバーのファイルを読み込むには、その「よそのサーバー」がクライアントプログラムから読み込み要求を受け付けて、その要求に対してファイル内容を送り返す動作をする必要があります。サーバーがそういう動きをしなければクライアントプログラムが勝手にファイルを入手することはできません。
その代表的なサーバーがApache等のWebサーバー(httpアクセス)です。Apacheなら質問にある通り.htaccessを設定することで公開フォルダ内のファイルのアクセス可否を制御できます。また、No.1さんが書かれているようにApacheの公開フォルダと別のフォルダにファイルを置くことで最初からhttpアクセスの対象外にする手もあります。
httpアクセス以外では、ftpアクセスやWindowsのファイル共有等がありますが、いずれにしてもそういう機能でアクセスできるようにするには、ftpサーバーやWindowsファイル共有機能をセットアップする必要があります。必要なければ無駄なサーバー機能はセットアップしなければよい話です。
そういうのが必要でセットアップした場合は、アカウントパスワードを設定し、パスワードを知っている人しかアクセスできないようにセットアップすればいいです。
そうすれば、例えプログラムからサーバーにアクセスしたとしてもパスワードを知っていて許可されているプログラムしかアクセスできません。
> 理想としては、同じサーバーもしくはドメイン上のHTMLやPHPなどからは読み込めて、それ以外のファイルからはブラウザだろうがプログラムだろうがアクセスできない、という形ですが、そういうことはできるもんなんでしょうか?
サーバーはApacheを立ち上げるだけにして、他のサーバー機能を立ち上げないようにすれば、後は.htaccessで制御するか、あるいはWeb公開対象フォルダの外にファイルを置くことで問題ありません。HTMLファイルのアップロード等のためにftpアクセスが必要ならftpサーバーを立ち上げ、必要な人だけがftpアクセスできるようアカウントとパスワードをちゃんと設定すれば問題ありません。なお、基本的なftpサービスではパスワードが暗号化されないまま通信路を流れるため、パスワードが盗み見される可能性があります。ftpを使う時はSFTP(Secure FTP)やFTPS(FTP over SSL/TLS)を使用することをお勧めします。
No.1
- 回答日時:
例えばPHPの場合
Webサーバにて、phpファイルは、PHPとして動作させる
などとされているはずですから、そのファイルを直接ブラウザ上でHTTPアクセスされても、
設定情報が保存されている変数などがブラウザに表示されるわけではありませんよ。
.htaccessによる制限自体が、そもそもHTTPアクセスを想定しているものなわけですから、
対応としてはあまり意味ないでしょう。
(運悪く設定ミスなどによってWebサーバがPHPとして認識しなかった場合には有効でしょう)
また、ファイルの読み込みは同一サーバ内でのみ読み込みが可能です。
もちろん、サーバ間でファイル共有などが行われていれば読み込み可能でしょうが、
外部からアクセスするという想定がHTTPアクセスのことを言っているのならば、そもそも
requireできません。
というか、require自体はされますが、HTTPアクセスの結果を読み込むだけですから、
例えば空ファイルを読み込んでいるのと変わりなかったりします。
逆に考えると、そんなことを外部者Aがあなたのサーバのファイルに対して行ったとした時、
あなたに悪意があれば、初めは害のコードだったものを書き換えてしまって、
外部者Aの情報を盗んだり破壊するということも可能となるかもしれません。
ということで、requireでHTTPアクセスすること自体が好まれません。
サーバを丸ごと乗っ取られるところまでいかないと漏れないよう、確実な隠ぺいを行いたいなら、
設定ファイルなどをWebサーバのDocumentRoot配下に置かないことです。
例えば
/var/www/html/
がDocumentRootなら、
/var/www/conf/
などのディレクトリ内に設定ファイルを置けばいいでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
JAVAで別サーバーのファイルの...
-
VBAでサーバーにアクセスするに...
-
VBScriptで、ファイルから任意...
-
cgi→csvが文字化け
-
ASP(IIS?)のエラーについて
-
#!/usr/bin/perl --
-
画像アップ時のエラー
-
ファイルダウンロード後に、デ...
-
SSIで,CGIを実行するときに引...
-
PyCharmでのCGIを使ったWebサー...
-
CGIでソースがそのままでてしま...
-
Yahoo!などのアクセス解析は??
-
ユーザの所属するグループを取...
-
東京ドームから幕張メッセまで...
-
ラジオボタンのグループ化
-
sendmailの-fオプション記述
-
FTPにて553エラー
-
URLに~/cgi-bin/~を隠す方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
VBAでサーバーにアクセスするに...
-
VBScriptで、ファイルから任意...
-
JAVAで別サーバーのファイルの...
-
vbでFTPサーバーに対して、サー...
-
空のファイル
-
フォームからアップロードした...
-
postmailのテンプレートページ...
-
CGI掲示板の改良
-
PHPが動いてCGIが動かない?
-
C# ファイル削除のエラーコード
-
contenttypeについて
-
statの戻り値が返ってこない
-
cgiのメールでファイルを添付し...
-
フリーの新着情報CGIを探してい...
-
ウィンドウズ XPの検索で拡張...
-
PC内のサイトのサイズとサーバ...
-
FTP接続後のwebサイトの観覧に...
-
.htaccess 外部サーバーからフ...
おすすめ情報