1

プロジェクト (正確には 2 つ) を開始し、SQL データベースを使用しています。私は SQL の初心者ですが、今しようとしている 1 つの決定に興味があります。

1 つのプロジェクトは、私たちが作成したものの内部追跡システムであり、もう 1 つのプロジェクトは、私が作成している小さなゲームです。私は最初に約1から10の同時接続を期待していますが、2番目に3桁から4桁の接続を夢見ることはできません.

私は SQL のセキュリティとパフォーマンスに興味があります。いろいろ読んでいるうちに、この問題は私が解決策を見つけたものではありません:安全で高速になりたい場合は、ユーザーをサーバーにログインさせたままにしておく方がよいでしょうか? 、サーバーにSQLデータベースにアクセスさせますか、それともすべてのユーザーにSQL接続を与える方が良いですか(ゲームでのスヌーピングによってログイン情報が盗まれるのを防ぐために、サーバーからこの接続を行うと思います)?

基本的に、サーバー上でデータベースにアクセスするスクリプトを作成し、サーバーに SQL データベースへの書き込みのみを許可することで同時接続を最小限に抑える必要があります (これは、オンラインで永続的なものがあるため、ゲームで行う必要があると想定していることです)。統計)、またはクライアントからデータベースへの直接接続を行う必要がありますか (これは、ほとんどのチュートリアルで行われている方法であり、ビジネス側にとってより受け入れられると思います)?

それを読んでいますが、これはカバーされていません。サーバーを介してすべての接続要求を処理し、サーバーを介して情報を返す方が安全に聞こえるため、私自身は最初の方法に傾いていますが、私が見たほとんどのアプリケーションは2番目の方法を実行しており、私が読んでいるものはどれも話していません/また。PS: はい、他にも調べなければならないことがたくさんあり、セキュリティとパフォーマンスのためにそれを行う必要があることはわかっています。現時点では、この質問に興味があります。答えてくれてありがとう。

4

2 に答える 2

1

最終的に行うことは、接続プールを構成することです。これは、ユーザーに配布する同時接続の最大数であり、接続をある時点で「再利用」することもできます。クライアントがデータベースに直接接続するという点では、絶対にそうしないでください。あなたがしたいことは、データベースへの読み取りアクセスのみを持つ特権のないユーザー アカウントを構成することです。これは、データを取得してクライアントに渡すアカウントになります。重要な点は、この読み取り専用アカウントはデータベースに書き込めないため、データが破損する可能性が最小限に抑えられます。

ここで必要なことは、攻撃 (SQL インジェクション) などの不適切なデータを除外するサービスまたはインターフェイスにアプリケーションを接続することです。このデータがサニタイズされたら、それをデータ層に渡すことができます。データレイヤー内に入ったら、接続を開き、クリーンで安全なデータをデータベースにプッシュします。リーダー アカウントは、トランザクションがコミットされた後にそれを取得できます。

要約すると、少なくとも 2 つのデータベース アカウントが必要です。1 つは読み取り専用で、これはユーザー用で、もう 1 つは作業を行うためのもので、アプリケーション内に隠され、外部からアクセスすることはできません。

于 2013-01-09T15:03:46.890 に答える
-1

サーバーは、SQL クエリを処理するサーバーです。クライアントは SQL データベースにアクセスできません。

于 2013-01-09T15:03:43.940 に答える