データセキュリティ保護
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 はより安全なデータベース環境を構築し、機密データの漏洩を防ぐことができます。