предотвращение внедрения SQL для создает метод в контроллере направляющих

Как замечено в comment_controller.rb:

def create
    @comment = Comment.new(params[:comment])
    @comment.save
end

Я предполагаю, что это небезопасно внедрением SQL. Но каков корректный способ сделать его?.. Все примеры в соответствии с сетевым соглашением с находками.

7
задан Jon Seigel 4 March 2010 в 18:48
поделиться

2 ответа

этот код - это в безопасности от атак SQL-инъекции. Удаление делается ActiveReCord, поэтому в любое время вы называете модель , Создать , NEW / Сохранить или любой другой метод Это делает взаимодействие базы данных, вы в порядке. Единственным исключением является если вы используете RAW SQL для одного из вариантов, например:

Comment.find(:all, :conditions => "user_id = #{params[:user_id]}")

Предпочтительная форма:

Comment.find(:all, :conditions => {:user_id => params[:user_id]})

, которая будет автоматически защищена от инъекции SQL.

7
ответ дан 6 December 2019 в 23:05
поделиться

Обратите внимание, что ваш пример кода безопасен от SQL-инъекции, как объяснил Алекс, но не безопасен от массовых эксплойтов присваивания .

4
ответ дан 6 December 2019 в 23:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: