2014-09-17 4 views
0

Я беспокоюсь, что мое решение не будет очень безопасным. Я использую Rails 4.1.6Рельсы, предотвращающие инъекции SQL

В настоящее время я использую:

@x = params[:myquery] 
Monkey.where("monkeys_name LIKE ?", "%#{@x}%") 

Я хочу, чтобы предотвратить инъекции SQL. Как обнаружить вредоносные объекты внутри @x? Есть помощники? Или делает Rails что-то, чтобы предотвратить его под капотом?

Спасибо!

+3

Не поленитесь и почитайте документацию http://edgeguides.rubyonrails.org/security.html#sql-injection –

+0

очень конструктивный комментарий о ленивой части. И все же спасибо за ссылку. – MiningSam

ответ

3

В руководстве по безопасности Rails он говорит, что

Вместо того, чтобы передать строку с опцией условий, вы можете передать массив дезинфицировать испорченные строки.

Monkey.where("monkeys_name LIKE ?", "%#{@x}%") 

Так что ваша строка будет продезинфицировать по умолчанию и Rails будет делать тяжелую работу за вас в этом случае.

Вы можете прочитать подробное руководство здесь, особенно 7.2.4 - это то, что вы ищете.

http://edgeguides.rubyonrails.org/security.html#sql-injection

+0

благодарит много - именно то, что я ожидал от миллионов функций Rails! – MiningSam

+0

Yeah Rails закрывает спину :) –

Смежные вопросы