Подтвердить что ты не робот

Безопасное удаление строк для фрагментов SQL для объединений, ограничений, выбора и т.д. (А не условий) в Rails

В Ruby on Rails для условий легко сделать запросы на SQL-инъекцию:

:conditions => ["title = ?", title]

где название происходит извне, из веб-формы или что-то в этом роде.

Но что, если вы используете фрагменты SQL в других частях запроса, например:

:select => "\"#{title}\" AS title"   # I do have something like this in one instance
:joins => ["LEFT JOIN blah AS blah2 ON blah2.title = \"#{title}\""]

Есть ли способ правильно избежать этих строк?

4b9b3361

Ответ 1

Обычно в Rails объединения выполняются как символ (или как хэш для соединений второго порядка), представляющий объединение id, и вы используете условия для его фильтрации. Если вам нужно сделать это, как показано, вы можете использовать ActiveRecord sanitize_sql_array для очистки строки SQL, например:

sanitize_sql_array(["LEFT JOIN blah AS blah2 ON blah2.title = ?", @blah.title])