- ベストアンサー
秘密ファイルのサーバーへの保存方法で最適なのは?
- 秘密ファイルのサーバーへの保存方法について、セキュリティを意識した方法を検討しています。現在、データベースを呼び出すときのユーザー名やパスワードを外部から閲覧できるファイルに保存していますが、より安全な方法を探しています。この記事では、別のファイルに保存して呼び出す方法やアクセス制限の方法について説明されていますが、より安全な方法はあるのでしょうか?
- データベースのユーザー名やパスワードなど、秘密情報を保存する際のセキュリティ対策について教えてください。現在は外部から閲覧できるファイルに保存していますが、より安全な方法を探しています。この記事では別のファイルに保存して呼び出す方法やアクセス制限の方法が紹介されていますが、他にもセキュリティを高める方法はあるのでしょうか?
- データベースのユーザー名やパスワードなどの秘密情報を安全に保存する方法について教えてください。現在は外部から閲覧できるファイルに保存していますが、セキュリティを向上させるために別の方法を探しています。この記事では別のファイルに保存して呼び出す方法やアクセス制限の方法が紹介されていますが、他にもより安全な方法はあるのでしょうか?
- みんなの回答 (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)を使用することをお勧めします。
その他の回答 (1)
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
例えば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/ などのディレクトリ内に設定ファイルを置けばいいでしょう。
お礼
お礼が遅くなって申し訳ありません。 なるほど。 そういえば、設定ファイルも変数に収納する形で書かれてありました。 その辺を失念していて、自分で作るときはテキストとしてベタ書きしていたので気になったんですが、PHPとして変数に入れてしまえばブラウザでは読み込めませんよね。 ご回答ありがとうございました。
お礼
お礼が遅くなって申し訳ありません。 そういえば、サーバーにファイルをアップロードするときにftpソフトを使うにしてもパスワードが必要でした。 確かにIDやパスワードが分からないと読み込めないんだから、http以外では普通はアクセスできないですよね。 なんだか、基礎的なことを失念してばかりでお恥ずかしい限りです。 ご回答ありがとうございました。