2012-02-13 6 views
1

私はmysqlでユーザを追加および削除するPHPシステムを構築しています。 - ユーザがサイトにログインしようとしました - projectdb.usersのユーザ名とハッシュ(sha256、salt、password)を検索します(mysqlユーザの資格です) - それを見つけてから使用しますログイン時にmysql_connectを実行するためのユーザ名とパスワードPHP経由でadmin mysqlユーザを追加する安全な方法

システムにユーザを追加する際に、資格情報をテーブルに追加し、mysqlユーザとしてprojectdbデータベースに最小限の権限で追加します。

私は管理者アカウントを追加するときに、そのユーザーにデータベースをフルアクセスする権限を与えて、それらにmysqlの付与/追加権限を与えてユーザーを追加できます。これらのユーザはmysqlに直接接続してログインすることはできませんが(もし誰でも追加できたとしても)、あまりにも多くのパワーのようです。

実際にmysqlユーザーをシステムに追加するのではなく、単一のユーザーと管理者のアクセス許可をphpファイルにハードコードする方がよいでしょうか?これら2つのアイデアよりも安全な方法はありますか?

+2

これはウェブアプリケーションの場合、なぜそれらをMySQLユーザーに追加するのですか?これはログ用ですか?私は実際に説得力のある理由なしにユーザーをプログラムとして追加することはできません。 – AlexC

+0

あなたはすべてのユーザーが1つのmysqlユーザーの資格情報を共有できることを知っていますか? –

+1

データベース接続の資格情報は、通常、アプリケーションコードとともに格納されます。アプリケーションアプリケーションを個々のデータベースアカウントに関連付けるのは非常に珍しいことです(Webアプリケーションの場合)。 –

答えて

4

ユーザーがデータベースに直接アクセスしていない場合は、ユーザーに許可/追加ユーザー権限を直接与える必要はありません。

ほとんどのCMSは、ユーザーが特定の操作を実行するための適切なアクセス許可を持っているかどうかをPHPコードが確認できるようにするアクセス許可テーブルを実装しています。そのため、PHPコードでは、ログインしているユーザが権限テーブルで設定された権限を持っているかどうかを確認してから、実際の管理ユーザ(root)にユーザ自身を作成させることができます。より多くのラウンドアバウトですが、そのパーミッション構造上に余分なレイヤーを作成することで、細かい粒度のコントロールがわずかに増えます。

+0

私は何を考えていたのですが、管理者のMySQLユーザー権限を取得する最も安全な方法は何ですか?私はちょうどそれらをPHPファイルの中に入れますか?私はPHPコードがすべてサーバー側で処理されていることを知っていますが、誰かがPHPのファイルを保存すると、ユーザー名とパスワードが表示されます。 –

+0

ちょっと見渡して、上記のコメントに良い答えが見つかったら、.htaccessファイルメソッドを使ってパスワードを保護すると思います。皆さんありがとう。 [how-to-secure-database-passwords-in-php](http://stackoverflow.com/questions/97984/how-to-secure-database-passwords-in-php) –

2

Davidさんの提案...これがWebアプリケーションの場合、なぜそれらをMySQLユーザーに追加するのですか?これはログ用ですか?私は実際に説得力のある理由なしにユーザーをプログラムとして追加することはできません。これは、通常、意図的に抽象化され、リスクを最小限に抑えます。

関連する問題