0

DB接続のベストアプローチとは。

すべての操作に対してすべての権限を持つ 1 つの接続 (CRUD)

または

2 つの接続、1 つは DELETE 用、もう 1 つはその他 (CRU) 用

または

操作ごとに異なる接続。

パフォーマンスとセキュリティに最適です。

4

2 に答える 2

0

個人的には、1 つの接続に固執します。

すべての権限を持つ 1 つの接続を持つことと、2 つの接続を持つことの間にセキュリティ上の違いはありません。攻撃者が CRU クレデンシャルにアクセスできる立場にある場合、攻撃者は他のクレデンシャルにも簡単にアクセスできます。

シンプルに保つことには、大きな意味があります。接続の管理について考える必要が少なくなればなるほど、安全なコーディング、ベスト プラクティス、脆弱性の管理などの他のことのために、より多くのヘッドスペースが得られます。

一括削除が特に心配な場合は、単一の行を削除するストアド ルーチン (ここから開始: http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html ) を使用できます。 . PHP 接続は、CRU 特権 (ただし、削除はできません) と、この保存された手順を実行する権限を持つことができます。つまり、攻撃者はこのプロシージャを複数回呼び出して複数のレコードを削除する必要があり、(適切に行われた場合) 単一の SQL ステートメントで一括削除を行うことはできません。

于 2013-10-27T07:07:59.630 に答える
0

一般的な方法は、SELECT、INSERT、UPDATE、および DELETE の権限が付与されたデータベースへの単一の接続 (ユーザー) を持つことです。

異なる権限を持つ別のユーザーが必要な場合は、SELECT のみを持つユーザーを 1 人作成し、すべて CRUD を持つ別のユーザーを作成します。次に、スクリプトでこれらの接続のいずれかを選択し、それをすべてのクエリの実行に使用します。

1 つのクライアントから複数の接続を開くことは、接続できるクライアントの数が実質的に半分になるため、お勧めできません。

これは、データベース サーバーが 1 つしかない場合にのみ適用されます。読み取りレプリカを使用する場合は、(異なるサーバー上の) 異なるデータベースへの複数の接続が問題になることはありません。

于 2013-11-18T23:41:20.187 に答える