web-dev-qa-db-ja.com

DBで機密データを保護する場合、H2を使用する価値はありますか?

現在、Webアプリケーションを設計しています。要件の1つは、ユーザーの資格情報とその役割を保護することです。

もちろん、通常のパスワードハッシュ+ソルト+に加えて、暗号化されたH2データベースにこれらの特定のテーブルを配置し、残りのデータをMySQLデータベースに配置することを考えていました。私の場合のH2の利点は次のとおりです。

  • インメモリストレージ(つまり、より高速なアクセスを意味します)
  • 暗号化されたデータベース(サーバーが危険にさらされた場合の追加のセキュリティ層)

追加のセキュリティレイヤーが要求される場合、これは一般的な方法ですか?つまり、ログイン情報(私の場合は機密データ)を他のデータから分離することをお勧めしますか?

3
Elio

データベースの暗号化により、低レベルのファイルベースのアクセスが防止されますデータベースへのアクセス許可システムを回避します。これは、攻撃者がコンピューターに物理的にアクセスする可能性がある場合(ノートブックが盗まれた場合など)に特に役立ちます。

サーバーでは、キー/パスワードの扱いに問題があります。暗号化の外に保存すると、攻撃者が簡単にアクセスできるようになります。ただし、保存しない場合は、サーバーの再起動時に手動で操作する必要があります。これは、可用性の理由から望ましくないことがよくあります。

データベースの暗号化Webアプリケーションを利用できる攻撃者には役立ちません SQLインジェクションを介してデータベースにアクセスする権限があります。

2番目のデータベース、特に2番目のデータベースソフトウェアを使用すると、攻撃対象が増えます。MySQLとH2の--​​バグのユニオンセットに対して脆弱です。安全に運用するには、両方のシステムを理解している人が必要です。

1つの利点があります。認証情報にアクセスするコードはごくわずかです。コードの大部分のSQLインジェクションの脆弱性は、分離された認証情報にアクセスできません。

私の職場では、代わりにWebアプリケーションに対してこれを行いました。要求を実行するユーザーの役割に応じて異なるデータベース接続を使用します。したがって、たとえば匿名ユーザーは、データベース権限がほとんどないデータベース接続を取得します。

4