私は、複数のウェブサイトでMySQLデータベースの独自のインスタンスを使用しても同じPHPコピーを使用する環境に取り組んでいます。これは明らかに各Webサイトの接続資格情報を意味し、より多くのユーザーがパスワードを必要とするため、ハッカーにとってより望ましいターゲットです。ただ、パスワードで、データベースにを接続しませだから私はに使用されるパスワードについて話している...PHP:データベース接続の資格情報を保護する
$user = 'user';// not actual user, not root either
$pass = 'pass';// not actual password
$server = 'localhost';
$database = mysql_connect($server,$user,$pass,true|false);
を誰もが、これらは私が話している資格情報です同じページにあることを確認しますデータベース(私は塩と唐辛子でハッシュした明確化のために)。
私は遠く離れて、明らかにサーバがデータベースに接続して訪問者のためにコンテンツを取得する必要があるため、完全に安全なセキュリティを100%保証できると思うものは読んでいません。私が間違っている場合は、これがどうなるか聞いてみたいと思います。
ハッカーがルートアクセス権を持っていると仮定しましょう(または、PHPコードへのアクセスを暗示していない場合は、すべてのPHPソースコードにアクセスできます)。等のデータベース。 PHPソースにアクセスする必要がある場合には、それらを防ぐことができなければ、可能な限り遅くしたいと考えています。私は各サイト/データベース接続パスワードを別々のファイルに保存することができます(私はマルチドメインサポートの仕上げから数週間ですが)public_html(明らかに)の内部ではなく、各サイトのパスワードを保持することができます。私はシリアライズとアンシリアライズを使用して、特定の変数を保存して、データベースが共有ホスティングで利用できなくなったときのフォールトトレランスを確保します(サイトAがサイトBのように見えなくなり、その逆も行わないようにします)。 (私のデータベースのエラーログは、SQLサービスが再び利用可能になったときに書き込まれ、これらの「離れた」エラーをキャッチします)。 1つのハッシュにパスワードを格納し、PHPでデータベースに接続するためにそれらをアンハッシュする方法を決定していますが、これについてのいくつかの意見もありたいと思います。
データベースの観点から(例えば、SELECT、INSERT、DELETE、UPDATEなどにユーザーを制限し、DROPとTRUNCATEを許可しないなど)、私の主な関心事は、最終的にはMySQLからPostgreSQLに移行するつもりです(これについて言及する方が良いかもしれませんが、これは関連するかもしれません)。私は現在、phpMyAdminとcPanelを使用しています。phpMyAdminは、接続されたユーザーがサイトのデータベースユーザー名と同じでないことを示しています。そのため、そのユーザーに対して特定のコマンド(例としてDROPとTRUNCATEを使用します)私は何らかの理由で間違っていますか?
接続資格情報が受け入れられる場所のコンテキストを設定する方法はありますか?明確にするために、ソースコードにアクセスできるハッカーは正当なユーザーと同じ方法でサイトにアクセスしません。
システムベースの暗号化が私の頭を越えるもう一つのアイデアは、システムがApacheを介してファイルを読み書きすることができるほぼ普遍的な(ほぼすべてのLAMP Webホスト設定のような)Webホスティング手法ですハッカーが迂回する方法を決定しなければならない新しい層を導入するだろうか?
私はもちろん、各ユーザーに異なるパスワードを使用しています。
私は現在、共有ホスティングを行っていますが、私のセットアップは最終的に専用ホスティングにまで拡大する予定です。
私のセキュリティコンセプトの考え方と、データベース接続資格情報をより安全にするために他にどのようなコンセプトを試すことができますか?
明確化:私が追求できるアイデアを探しています。いずれかの提案に不一致がある場合は、明確な説明を求めて、与えられたアプローチを議論する代わりにあなたの懸念を説明してください。ありがとう!
これは建設的な質問ではなく、SOに適合しません。特定の質問を投稿してください。これは議論と議論につながります。 – Jakub
私は、データベースの資格情報を格納するセキュリティの強化が建設的ではないことに気付きません。私はアイデアのために議論するつもりはないが、私はその明確化を私の質問に追加する。 – John