例えば、データベースを呼び出すときのユーザー名やパスワードを、そのまま外部から閲覧できるファイルに書いておくと危ないから、別のファイルにして呼び出すようにするというのは初心者用の教科書にも書いてありますよね。
例えば、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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Windowsのマクロプログラムで、こんなことできますか? 3 2022/06/28 14:30
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- サーバー Laravelをレンタルサーバーにインストールするにはどうすればいいですか? 2 2022/06/29 10:17
- Excel(エクセル) Excelで、社外秘(閲覧のみ)と表示され、共有者が編集出来ないのですが 4 2023/06/20 17:54
- その他(IT・Webサービス) WEBサイト内のファイルを探す方法は? 1 2022/11/11 16:38
- アプリ Voiceflowでアレクサスキルを作成したらどうやって限定公開したらいいのでしょうか? 2 2023/06/02 03:26
- ドライブ・ストレージ 家庭用のNASについて 2 2022/07/05 18:30
- その他(IT・Webサービス) ホームページにカウント数を表示する 2 2022/10/28 10:37
- サーバー WIN10のファイル又はフォルダを社内LAN上HDDで共有する場合、特定の人だけが見えるようにしたい 3 2023/04/18 00:32
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
個人的なアップローダーの設置
-
VBAでサーバーにアクセスするに...
-
vbでFTPサーバーに対して、サー...
-
ローカルファイルをサーバーか...
-
サーバー上のフォルダ削除が出...
-
ApacheでのCGIについての質問
-
ラジオボタンのグループ化
-
CGI実行環境下の.jsや.cssが動...
-
.cgi拡張子のままCGIファイルを...
-
URLに~/cgi-bin/~を隠す方法
-
perlからJavascriptを起動
-
クライアントサイドとサーバー...
-
ASPから既存のexcelブックを開...
-
CGIでソースがそのままでてしま...
-
perl 矢印演算子 -> の使い方
-
SSIの『#exec cmd』と『#exe...
-
KENT WEBのTOPICS BOARDを改造...
-
SSI(<!--#exec cmd="./XXXpl")...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
EXCELファイルに誰がアクセスし...
-
《エクセルVBA》「他の人が該当...
-
VBAでサーバーにアクセスするに...
-
VBScriptで、ファイルから任意...
-
JAVAで別サーバーのファイルの...
-
vbでFTPサーバーに対して、サー...
-
C# ファイル削除のエラーコード
-
空のファイル
-
Perl 別ドメインのファイル存在...
-
contenttypeについて
-
input type="file"で複数選択を...
-
CGI_lite.pmを使ったファイルの...
-
FTPでのアップロード後
-
自前のアップローダの作り方
-
WEB上で文書のアイコンを配置す...
-
Webフォルダでサーバーからイン...
-
サーバー上のフォルダ削除が出...
-
URLに~/cgi-bin/~を隠す方法
-
ラジオボタンのグループ化
-
ASPから既存のexcelブックを開...
おすすめ情報