2016-08-21 56 views
1

因此,我创建了多租户数据库,其中每个租户都有自己的模式。我正在使用Java JDBC & MySQL。当新租户注册时,他们为其组分配的名称将成为架构名称。安全地为多租户数据库创建新模式

我的挑战是如何在没有SQL注入的情况下做到这一点。显然,你不能参数创建模式语句,就像这样:

create schema ? 

如果我允许字符串中的名字只是被放置在该语句的结束,我打开SQL注入一个极大的相的安全漏洞。所以我只是想知道这里最好的方法是什么。

我最好的猜测是让架构名称不是实际的组名,而是通过内部进程创建它们。 (groupId + firstThreeLettersOfName)的一些东西。但我对想法持开放态度。

谢谢。

+0

我对此的解决方案是不为每个租户使用单独的架构。你能否告诉我们为什么每个租户需要一个单独的模式? –

回答

0

首先,使用清理程序。去除除字母数字和下划线之外的所有字符,并限制长度。

其次,将名称包装在反向撇号中。这应该给你想要的结果。