web-dev-qa-db-ja.com

セキュリティ:mysql接続詳細ファイルを非表示

わかりましたので、これは非常に基本的な質問でなければならないことを知っていますが、私の問題は次のとおりです:最初のPHPミニアプリを開発したので(これはかなり新しいです) web索好きな目から何らかの形で保護する必要がある私のWebアプリケーションの2つのファイルがあること

  • データベースに接続するための詳細を含むもの
  • パスワードハッシュとソルトキーを持つもの

それらを保護するにはどうすればよいですか?私はどこかでそれらが私のパブリックディレクトリのどこかに置かれるべきだと読んだことがありますが、アプリはどのようにしてそれらにアクセスできるのでしょうか? Document Rootが他のものと異なるように、Apacheの設定を変更する必要がありますか?

セキュリティに関して考慮すべき他のことはありますか?これまでのところ、mysql_real_escape_string()を使用してdbに入るすべてのユーザーフィールドをエスケープしていますが、それ以外はパスワードのハッシュとソルトを行い、他には何もしていません。

7
margaritam

アプリの詳細を知ったり、実際のコードを見たりせずに、詳細なセキュリティアドバイスを提供することは困難です。ここで言われていることは、あなたの投稿を読んだ後に思い浮かぶいくつかのことです:

1:構成ファイルをデータベース接続情報とソルトキーとともに公開ディレクトリの外に保持し、それを444または644にchmodします。上記の1つのディレクトリにアクセスできます。このような<?php include('../config.php'); ?>

2:データベースに入る情報は必ずエスケープする必要がありますが、mysql_real_escape_stringはPHPの時点で廃止されるため、mysqliへの切り替えを検討してください5.5.0。今後削除されます。

3:認証システムがどのように見えるかはわかりませんが、パスワードのような重要なデータをクッキーに保存しないようにしてください。これはあなたのコードを見ずに良いアドバイスをすることが不可能であるという私の最初のポイントに戻りますが、ユーザー認証を保護するための記事、チュートリアル、および事前に構築されたソリューションがたくさんあります- https://stackoverflow.com/質問/ 1624846/php-best-practices-for-user-authentication-and-password-security

7
Josh Mountain