2016-08-21 3 views
1

So erstellen ich eine Multi-Tenant-Datenbank, wobei jeder Mieter ihr eigenes Schema haben wird. Ich benutze Java JDBC & MySQL. Wenn sich ein neuer Nutzer anmeldet, wird der Name, den er für seine Gruppe angibt, zum Schemanamen.Erstellen Sie sicher neue Schemas für Multi-Tenant-Datenbank

Meine Herausforderung ist, wie dies ohne SQL-Injektion zu tun ist. Anscheinend kann man nicht parametrieren Schema-Anweisungen erstellen, wie folgt aus:

create schema ? 

Wenn ich den Namen in der Zeichenfolge erlauben, nur am Ende dieser Erklärung platziert werden, ich öffne eine ginormous Sicherheitslücke für SQL-Injection. Ich frage mich nur, was der beste Ansatz hier ist.

Meine beste Vermutung ist, dass die Schemanamen nicht tatsächlich die Gruppennamen sind, sondern durch einen internen Prozess erstellt werden. Etwas in der Art von (groupId + firstThreeLettersOfName). Aber ich bin offen für Ideen.

Danke.

+0

Meine Lösung wäre, nicht für jeden Mandanten separate Schemas zu verwenden. Können Sie uns wissen, warum jeder Mieter ein separates Schema benötigt? –

Antwort

0

Verwenden Sie zuerst eine Bereinigungsprozedur. Entferne alle Zeichen mit Ausnahme von alphanumerischen und Unterstrichen und beschränke die Länge.

Zweitens, wickeln Sie den Namen in umgekehrte Apostrophe. Das sollte Ihnen das gewünschte Ergebnis geben.

Verwandte Themen