2016-08-21 4 views
1

各テナントが独自のスキーマを持つマルチテナントデータベースを作成しています。私はJava JDBC & MySQLを使用しています。新しいテナントがサインアップすると、グループに割り当てられた名前がスキーマ名になります。マルチテナントデータベース用の新しいスキーマを安全に作成する

私の挑戦は、SQLインジェクションをせずにこれを行う方法です。どうやらあなたはこのように、スキーマ文を作成するパラメータ化することはできません:私は、文字列の名前だけでは文の最後に配置することを可能にする場合は

create schema ? 

、私は、SQLインジェクションのためginormousセキュリティホールを開きます。だから、私はちょうど最高のアプローチがここにあるのだろうかと思っています。

スキーマ名を実際にグループ名にするのではなく、内部プロセスでスキーマ名を作成することをお勧めします。 (groupId + firstThreeLettersOfName)の行に沿った何か。しかし、私はアイデアを公開しています。

ありがとうございました。

+0

私の解決策は、テナントごとに別々のスキーマを使用しないことです。それぞれのテナントが別々のスキーマを必要とする理由について、私たちに手がかりを与えることができますか? –

答えて

0

まず、クリーンアップ手順を使用します。英数字とアンダースコアを除くすべての文字を取り除き、長さを制限する。

第2に、名前を後方アポストロフィで囲みます。それはあなたに望ましい結果を与えるはずです。

関連する問題