• ベストアンサー

パスワードの隠蔽方法

外部のデータベースやメールを利用する場合、パスワードを含めたアカウントが通常必要かと思います。 パスワードを平文でソースに記述し、非公開ディレクトリに設置しました。 しかし、セキュリティ上好ましくないと思います。 どのように隠蔽すればよいでしょうか。 何か定石があればおしえてください。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

私個人的な意見ですが、アカウント情報の隠蔽措置は2段階に分類できると思います。 1段階目は外部からWebサーバ経由でアカウント情報が閲覧されないこと 2段階目はマシンに不正にログインされた場合にアカウント情報が閲覧されないこと です。 ファイルパーミッションやユーザを制限するのは2段階目だと言えます。 それに対し、.htaccessで制限する、公開ディレクトリに置かないというのが1段階目になります。 ご質問のように拡張子を変更する対応は1段階目に含まれるので、.htaccessで制限できる、もしくは非公開ディレクトリに置くことが可能であれば特に必要ないと思います。 逆に.htaccessや非公開ディレクトリが使用できなければ、ファイルの拡張子をどうするか考えるべきだと思います。

ton_jiru
質問者

お礼

よく理解できました。 大変参考になりました。 ありがとうございました。

その他の回答 (2)

回答No.2

これはプログラム内で使用するDBやメールサーバのアカウント情報をどうするかということですよね? 私はアカウント情報を一つのファイルにまとめ、ファイルの所持ユーザとパーミッションで制限しています。 具体的には非公開ディレクトリにアカウントファイルを置き、ユーザをWebサーバの起動ユーザ(例:apache)とし、パーミッションを400にしています。 アカウント情報の暗号化する場合は、MD5などのハッシュ化は復元できないので、今回の使い方としては不適切です。 アカウントファイルを復号可能な方法で暗号化することも可能ですが、PHP内で復号する必要があるので、アカウントファイルにアクセスできるような非公開ディレクトリが閲覧されるレベルまで進入されると無意味になってしまいます。 それよりも、データベースやメールサーバのアクセスをローカルネットワークからのみに限定するなどの制限のほうが有効かと思います。

ton_jiru
質問者

お礼

ありがとうございます。 大変参考になりました。 パスワードやファイル自体の暗号化は、.htaccessによるアクセス制御のようなユーザー認証の場合有効ですが、DBやメールサーバーアクセス時に復号アルゴリズムが必要な時点であまり意味がない気がしました。 ただ、平文よりも見た目上気休めになりますし、パーミッションの設定ミスで閲覧される場合も多少解読に時間がかかるのではないかというメリットはあるように思えます。 ちなみに、No1さんの言うような、ファイル属性にも気をつけた方がよいのでしょうか? 例えば、x属性のファイルであるphpソース自体にパスワードを記述することに問題があるかどうかです。

回答No.1

一般的には、拡張子をphpやcgiにすれば、ダイレクトに表示させよう押しても、サーバはスクリプトと解釈しようとするので、閲覧できません。 設定ファイルや、データファイルは拡張子をtxtやdatにはしないようにしましょう。 あとは、クロスサイトスクリプティングを見るとか。 ようは、送られてくるデータのタグを禁止したり、内部の情報を外に漏らさないための考え方(?)です。 データ側ですが、md5関数がありこいつは暗号化し、複合(元に戻す)できないので、データのパスワードの隠蔽に使う場合が多いです。 あと何かあったら、回答者の方、私にも教えてくださいね。

ton_jiru
質問者

お礼

ありがとうございます。 隠蔽することにも幅がありそうですね。 参考になりました。

関連するQ&A