2016-08-21 84 views
1

因此,我創建了多租戶數據庫,其中每個租戶都有自己的模式。我正在使用Java JDBC & MySQL。當新租戶註冊時,他們爲其組分配的名稱將成爲架構名稱。安全地爲多租戶數據庫創建新模式

我的挑戰是如何在沒有SQL注入的情況下做到這一點。顯然,你不能參數創建模式語句,就像這樣:

create schema ? 

如果我允許字符串中的名字只是被放置在該語句的結束,我打開SQL注入一個極大的相的安全漏洞。所以我只是想知道這裏最好的方法是什麼。

我最好的猜測是讓架構名稱不是實際的組名,而是通過內部進程創建它們。 (groupId + firstThreeLettersOfName)的一些東西。但我對想法持開放態度。

謝謝。

+0

我對此的解決方案是不爲每個租戶使用單獨的架構。你能否告訴我們爲什麼每個租戶需要一個單獨的模式? –

回答

0

首先,使用清理程序。去除除字母數字和下劃線之外的所有字符,並限制長度。

其次,將名稱包裝在反向撇號中。這應該給你想要的結果。