-3

私は最近 PHP/MySQL を学び、サーバー SQL からいくつかのコンテンツを取得して HTML に入れようとしていました。

<div id="fetched_content">
    <!-- data from PHP connection comes here -->
</div>

今私が聞きたいのは、接続用に提供されたデータベースのユーザー名とパスワードを保護する方法を教えてください。

define("DB_SERVER", "localhost");
define("DB_USER", "user");
define("DB_PASS", "password");
define("DB_NAME", "widget_corp");
$connection = mysql_connect(DB_SERVER,DB_USER,DB_PASS);
if (!$connection) {
    die("Database connection failed: " . mysql_error());
} 

// 2. Select a database to use 
$db_select = mysql_select_db(DB_NAME,$connection);
if (!$db_select) {
    die("Database selection failed: " . mysql_error());
}

このようにすると、ユーザー名、パスワード、およびテーブル名がソースコード内の誰にでも見えるようになります。どうすればそれらを隠すことができますか?

4

3 に答える 3

2

パスワードを保存する方法が唯一の方法です。PHP ファイルがサーバー内の誰もアクセスできない場所に保存されていることを確認する必要があります。これを行う方法は、実行しているサーバーによって異なります。それらはすべて異なる設定になっています。

また、mysql のユーザー名とパスワードが外部 IP アドレスで使用できないようにする必要があります。PHP コードが実行されているコンピューター以外の世界中のコンピューターから MySQL データベースに接続できないようにする必要があります (開発作業には、SSH トンネルをサポートする MySQL クライアントを使用してください)。

あなたが間違っている他のいくつかのこと:

そして最も重要なのは、秘密のデータをデータベースに保存しないことです。パスワードやクレジット カード データなどは、強力な業界標準アルゴリズムでハッシュ化または暗号化する必要があります。これを正しく行う方法がわからない場合は、ここで質問してください。

ハッカーが時折すべてのサーバーに完全にアクセスできると想定するのは、業界標準のセキュリティ慣行です。ハッカーがアクセスしても完全な災害にならないように、データベースを設計する必要があります。データを暗号化することがこれを達成する唯一の方法であり、暗号化を怠る企業は常に、最終的にズボンをくるぶしで締めくくることになります。

于 2013-08-25T04:42:50.233 に答える
1

ソースに db ユーザー名とパスワードが必要です。他にどのようにデータベースに接続しますか? したがって、重要なのはユーザー名とパスワードを保護する方法ではなく、ソース ファイルを保護する方法です。ここに資格情報を表示したことで、あなたは悪いスタートを切りました。

暗号化を使用したり、資格情報を別の場所からロードしたりすることもできます...しかし、ソース ファイルにアクセスできる人は誰でも、ユーザー名とパスワードを検索/追跡/復号化できます。

しかし、PHP は、コード自体ではなく、PHP からの出力のみをレンダリングするため、サーバーが正常に動作している限り安全です。それが私たち全員のやり方です。

于 2013-08-25T04:33:16.590 に答える