使用JOOQ设置MySQL变量,安全地使用用户输入

问题描述 投票:2回答:1

我正在尝试像这样使用JOOQ设置MySQL变量。 value是用户输入。

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

虽然这可以按预期工作,但我担心通过用户输入执行这样的普通SQL所允许的SQL注入。在JOOQ中是否有办法用预先准备的语句或任何其他更安全的方式实现相同的目的?

java mysql sql-injection jooq
1个回答
2
投票

使用纯SQL模板API:https://www.jooq.org/doc/latest/manual/sql-building/plain-sql-templating

例如。如果您使用的是简单的绑定变量:

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

或者,如果您希望使用更复杂的表达式:

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

在幕后,默认情况下,jOOQ将始终执行准备好的语句。

© www.soinside.com 2019 - 2024. All rights reserved.