使用 JOOQ 安全地设置 MySQL 变量和用户输入
Set MySQL variables using JOOQ with user inputs securely
我正在尝试像这样使用 JOOQ 设置一个 MySQL 变量。 value
是用户输入。
DSLContext dslContext = DSL.using(connection, dialect);
dslContext.execute("set @myvar :=" + value);
虽然这按预期工作,但我担心通过用户输入像这样执行普通 SQL 可能允许的 SQL 注入。在 JOOQ 中有没有办法用准备好的语句或任何其他更安全的方式实现同样的事情?
使用普通 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 将始终执行准备好的语句。
我正在尝试像这样使用 JOOQ 设置一个 MySQL 变量。 value
是用户输入。
DSLContext dslContext = DSL.using(connection, dialect);
dslContext.execute("set @myvar :=" + value);
虽然这按预期工作,但我担心通过用户输入像这样执行普通 SQL 可能允许的 SQL 注入。在 JOOQ 中有没有办法用准备好的语句或任何其他更安全的方式实现同样的事情?
使用普通 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 将始终执行准备好的语句。