所以我正在创建一个多租户数据库,每个租户都有自己的架构。我正在使用Java JDBC& MySQL的。当新租户注册时,他们为其组分配的名称将成为模式名称。
我的挑战是如何在不注入SQL的情况下执行此操作。显然你无法参数化创建模式语句,如下所示:
create schema ?
如果我允许将字符串中的名称放在该语句的末尾,我会为SQL注入打开一个巨大的安全漏洞。所以我只是想知道最好的方法是什么。
我最好的猜测是让模式名称实际上不是组名,而是通过内部进程创建它们。类似于(groupId + firstThreeLettersOfName)的东西。但我对创意持开放态度。
感谢。
答案 0 :(得分:0)
首先,使用清理程序。剥去除字母数字和下划线之外的所有字符,并限制长度。
其次,将名称包含在后向撇号中。这应该会给你想要的结果。