Установите переменные MySQL, используя JOOQ с безопасным пользовательским вводом - PullRequest
0 голосов
/ 06 сентября 2018

Я пытаюсь установить переменную MySQL, используя JOOQ, как это. value - это пользовательский ввод.

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

Хотя это работает, как и ожидалось, я обеспокоен возможными SQL-инъекциями, которые допускаются при выполнении простого SQL, подобного этому, с пользовательским вводом. Есть ли способ в JOOQ добиться того же с помощью подготовленных утверждений или любым другим более безопасным способом?

1 Ответ

0 голосов
/ 06 сентября 2018

Используйте простой API шаблонов SQL: 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 всегда будет выполнять подготовленный оператор.

...