使用jooq和用户输入安全地设置mysql变量

sg2wtvxw  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(361)

我正试图像这样使用jooq设置一个mysql变量。 value 是用户输入。

DSLContext dslContext = DSL.using(connection, dialect);
dslContext.execute("set @myvar :=" + value);

虽然这可以像预期的那样工作,但我担心的是,通过使用用户输入执行像这样的纯sql,可能会允许sql注入。在jooq中,有没有一种方法可以通过预先准备好的语句或其他更安全的方式来实现同样的目标?

ykejflvf

ykejflvf1#

使用普通sql模板api:https://www.jooq.org/doc/latest/manual/sql-building/plain-sql-templating
e、 g.如果您使用的是简单绑定变量:

dslContext.execute("set @myvar := ?", value);

或者,如果要使用更复杂的表达式:

dslContext.execute("set @myvar := {0}", DSL.val(value));

在幕后,默认情况下,jooq总是执行一个准备好的语句。

相关问题