データセキュリティ保護
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はより安全なデータベース環境の構築を支援し、機密データの漏洩から保護します。