コンテンツにスキップ

データセキュリティ保護

MyBatis-Plusは、開発者の異動による機密情報漏洩を防ぐためのデータセキュリティ保護機能を提供しています。バージョン3.3.2以降、MyBatis-Plusは暗号化設定とデータセキュリティ対策を通じてデータベースのセキュリティを強化することをサポートしています。

設定セキュリティ

YML設定暗号化

MyBatis-Plusでは、暗号化された文字列を使用してデータベース接続情報を設定できます。YML設定ファイルにおいて、mpw:で始まる設定項目は暗号化された内容として扱われます。

spring:
datasource:
url: mpw:qRhvCwF4GOqjessEB3G+a5okP+uXXr96wcucn2Pev6Bf1oEMZ1gVpPPhdDmjQqoM
password: mpw:Hzy5iliJbwDHhjLs1L0j6w==
username: mpw:Xb+EgsyuYRXw7U7sBJjBpA==

鍵による暗号化

AESアルゴリズムを使用してランダムな鍵を生成し、機密データを暗号化します。

// 16桁のランダムなAES鍵を生成
String randomKey = AES.generateRandomKey();
// ランダム鍵を使用してデータを暗号化
String encryptedData = AES.encrypt(data, randomKey);

使用方法

アプリケーション起動時に、コマンドライン引数を介して鍵を渡します。

バージョン3.5.10以降、システムプロパティと環境変数による鍵の受け渡しをサポートしています。

// Jar起動パラメータ例(IDEAでProgram argumentsに設定、またはサーバー上で起動環境変数として設定)
--mpw.key=d1104d7c3b616f0b

データセキュリティ

MyBatis-Plusは、データベースに保存された機密データを保護するために、フィールドの暗号化・復号およびフィールドのマスキング機能を提供しています。

  • フィールド暗号化・復号: データベース内の特定フィールドを暗号化して保存し、必要時に復号して使用します。
  • フィールドマスキング: 機密フィールドに対してマスキング処理を行い、機密情報を隠蔽または曖昧化します。

SQLインジェクションセキュリティ保護

MyBatis-Plusは、SQLインジェクションリスクをチェックするための自動および手動の2つの方法を提供しています。

自動チェック

Wrappers.query() メソッドを使用する際、.checkSqlInjection() を呼び出すことで自動チェックを有効にできます。

Wrappers.query()
// SQLインジェクションの自動チェックを有効化
.checkSqlInjection().orderByDesc("任意のフロントエンドから渡されるフィールド。チェックの網羅性が不完全な可能性があるため、ホワイトリスト処理を推奨します")

手動検証

SqlInjectionUtils.check() メソッドを使用して手動で検証を行います。

// フロントエンドから渡される任意のフィールドにSQLインジェクションリスクが存在するか手動で検証
SqlInjectionUtils.check("任意のフロントエンドから渡されるフィールド。チェックの網羅性が不完全な可能性があるため、ホワイトリスト処理を推奨します")

上記の対策を通じて、MyBatis-Plusはより安全なデータベース環境の構築を支援し、機密データの漏洩から保護します。

Baomidou

© 2016-2025 Baomidou™. All Rights Reserved.

Power by Astro Starlight | Sponsored by JetBrains

渝ICP备2021000141号-1 | 渝公网安备50011302222097