安全地为多租户数据库创建新模式

时间:2016-08-21 14:08:11

标签: java mysql

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

我的挑战是如何在不注入SQL的情况下执行此操作。显然你无法参数化创建模式语句,如下所示:

create schema ?

如果我允许将字符串中的名称放在该语句的末尾,我会为SQL注入打开一个巨大的安全漏洞。所以我只是想知道最好的方法是什么。

我最好的猜测是让模式名称实际上不是组名,而是通过内部进程创建它们。类似于(groupId + firstThreeLettersOfName)的东西。但我对创意持开放态度。

感谢。

1 个答案:

答案 0 :(得分:0)

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

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