web-dev-qa-db-ja.com

PHPで安全にMySQLに接続する最良の方法

PHPを使用してMySQLデータベースに接続するための最も安全な方法であると皆さんが考えていることについて、いくつかの入力が必要です。現在、私がそれをしている方法は、ユーティリティPHPファイルを他のすべてのファイルの上部に含めるPHPファイルです。ユーティリティPHPファイルはこれです:

<?php
    if(!defined('IN_PHP')){
        die("hackerssss");
    }
    $mysql_Host = "localhost";
    $mysql_user = "root";
    $mysql_pass = "root";
    $mysql_db = cokertrading;
?>

助言がありますか?

22
Tim

提案:rootとして実行してはいけません。別のアカウントを作成し、サイトに必要な「最も少ない」権限を付与します。

25
Alex

私は誰も [〜#〜] mysqli [〜#〜]準備されたステートメント について言及していないと信じることができますが、パスワードとデータベース接続をロックすることができますが、それは最終的には無駄です';DROP TABLE users;--ログインフォームで。

http://en.wikipedia.org/wiki/SQL_injection で、私が話していることについてのアイデアを確認してください。

  • 「root/root」の代わりに適切なログイン資格情報のペアを定義します(ユーザー名を別のものに変更し、複雑なパスワードを選択します)。

  • 可能であれば、データベースへのアクセスをファイアウォールレベルのlocalhostに制限するか、@ Scottがコメントで述べているように、mySQLを127.0.0.1からの接続のみをリッスンするように設定します。両方が不可能な場合は、mySQLレベルでアクセスを制限してください。 ("username"@"localhost"

6
Pekka

PHPスクリプトはサーバー側であるため、つまりサーバー上で解析され、only出力はブラウザーに送信されます。これを行う方法は完全に安全です。

ユーザーがユーザー名とパスワードを取得できる唯一の方法は、実際にサーバーにハッキングしてソースコードを表示することです。この場合、(PHPで)これを防ぐ方法はありません。

5
Thomas Clayson
  1. そのファイルを読むことができる人はだれでもあなたのSQLパスワードを知っていることを覚えておいてください。
  2. Rootでログインしないでください。アプリケーションごとにユーザーを作成してください。
  3. ルートパスワードとして「root」を使用しないでください。
  4. 誰にもパスワードを教えないでください。
5
o0'.