5

アプリケーションからの接続のみを許可する別のサーバーにデータを保存すること、暗号化のためのキーペアなどを含む、データを安全に保存するための概念を大部分理解しています。それははるかに安全です。

たとえば、強化された安全な Web サーバーがあり、ユーザー入力からデータをキャプチャして保存するとします。データは暗号化され、db クエリまたは Web サービスを介して db サーバーに送信されます。db サーバーは Web サーバーからの接続のみを許可し、データを暗号化された形式で保存します。したがって、誰かがデータベースにアクセスした場合、データは価値がありません。

しかし、誰かが Web サーバーにアクセスすると、暗号化アルゴリズムとキーだけでなくデータベースにもアクセスできますよね? その場合、データの転送は別の潜在的な攻撃ポイントに過ぎないのに、なぜデータを別のサーバーに置く必要があるのでしょうか。

侵害された場合に db サーバーへのアクセスが取得されないように、Web サーバー上の接続情報と暗号化アルゴリズムを隠す方法はありますか? 難読化だけでは不十分だと思います。どんなアイデアでも大歓迎です。

ありがとうブライアン

4

4 に答える 4

5

人々がセキュリティを設計する方法には、ある程度の魔法のような考え方や民間伝承があります。その通りです。データを別のサーバーに単独で保存しても、他のあらゆる種類のことを行わない限り、必ずしも物事がより安全になるとは限りません。それも。

キーの管理は、これの大きな部分を占めています。Web アプリケーションのコンテキストでこれを行うことは別の主題であり、PHP の堅牢なソリューションを認識していません。おっしゃる通りです。Web アプリケーションで何かを復号化できるようにする必要がある場合は、キーにアクセスする必要があります。また、Web アプリケーションが侵害された場合、攻撃者もキーにアクセスできます。

これが、私が公開鍵暗号化を使用する傾向があり、公開されている Web サーバーを「書き込み専用」として扱ってきた理由です。つまり、Web サーバーは公開鍵を使用して暗号化し、データベースに保存し、決して復号化できません。秘密鍵を使用して暗号化を解除できるのは、別のプロセス (公共のインターネットでは利用できない) だけです。このようにして、クレジット カードの詳細をデータベースに保存することができ、カードに請求するアプリケーションだけがそれを解読するための秘密鍵を持っています。このアプリは、インターネットからアクセスできない安全な環境で実行されます。

第 2 に、侵害には複数のレベルがあります。たとえば、攻撃者がサーバーのファイル システムへの読み取り専用アクセスを取得する可能性があります。そのファイル システムにデータベースが含まれている場合、彼らはデータ ファイルを手に入れ、それを彼らが管理するサーバーに復元し、復号化キーを使用して個人データを盗むことができます。データベースが別のサーバー(インターネットからアクセスできない)で実行されている場合、この攻撃ルートは不可能になります。

攻撃の 1 つのルートが開いたままになっているという事実は、他の攻撃から保護できないという意味ではありません。

于 2012-01-03T17:17:29.187 に答える
4

私のセットアップのほとんどでは、Web サーバーはファイアウォールの DMZ にあり、DB はファイアウォールの背後にあります。DBサーバーをファイアウォールの外に置きたくありません。この余分なレベルのセキュリティにより、誰かが許可なくデータにアクセスすることがはるかに難しくなります.

ところで、ネット上の Web サーバーは「強化されて安全」と見なされるべきではありません。一般に公開されている場合、ハッキングされる可能性があります。それは彼らがどれだけ努力したいかの問題です。

誰かが Web サーバーをハッキングして、管理者としてログインできるようになれば、データベースの読み書きが可能になるというあなたの推測は正しいです。しかし、これは、DB を Web サーバーに置くことによって、セットアップをさらに弱めるべきだという意味ではありません。セキュリティを下げるのではなく、セキュリティを強化する必要があります。

編集:

常にセキュリティの層の観点から考えてください。重要な部分を別々のレイヤーに分けます。これは 2 つのことを行います。これにより、攻撃者が解決すべき問題が多くなり、検出と対応のための時間が増えます。

したがって、シナリオでは、Web サーバーへのアクセスは 1 つのレイヤーであり、2 番目のレイヤー (別のレイヤーであるファイアウォールの背後) の暗号化サーバーを呼び出すことができ、暗号化サーバーは、別のレイヤーであるDBサーバー。

レイヤーを使用すると、より安全になります。しかし、それらはまた負担を増やし、応答時間を遅くします。そのため、実際の要件に合わせてソリューションのバランスを維持してください。

于 2012-01-03T17:04:31.733 に答える
2

ここでの問題は、キーが侵害される可能性のある公開サーバー上にあることです。サーバー自体が「強化」されていても、攻撃者がキーまたはデータにアクセスできる脆弱性がアプリに存在する可能性があります。

取り決めのセキュリティを向上させるために、暗号化されたデータを処理するコードだけを (キーとともに)、Web サーバーのみがアクセスできる安全なマシンに移動し、非常に制限された API を介してのみアクセスすることができます (つまり、最小限の必要)。各操作は、機密データを抽出しようとする試みの兆候である可能性がある異常な動作を見つけるためにログに記録されます。

于 2012-01-03T17:16:34.000 に答える
2

セキュリティの観点からは、データベースを別のサーバーに配置してもあまり役に立ちません。認証トークンが侵害されると、ゲーム オーバーになります。

ただし、データベースデータ アクセス レイヤー (DAL) をビジネス ロジックとプレゼンテーションから分離することは理にかなっています。そうすれば、アプリケーション サーバーが悪意のある人の餌食になった場合、データベース アクセスは特定の DAL 操作に制限され、適切に実装されていれば、データを害から遠ざけることができます。

それ以外には、データ ストレージを別のサーバーに分離することによるセキュリティ上の利点はあまりありません。

于 2012-01-03T17:47:46.303 に答える