rails безопасен Model.new от инъекций sql? - PullRequest
0 голосов
/ 07 июля 2010

Защищает ли ModelName.new от SQL-инъекций?

Пример:

@user = User.new(params[:user])

@user.save

Я прочитал документацию по безопасности rails s и ничего не видел о вставках через Model.new.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 07 июля 2010

Model.new не имеет ничего общего с внедрением SQL, поскольку это не метод записи в базу данных.
Это Model.save, который на самом деле пишет в базу данных и заботится о внедрении SQL.

0 голосов
/ 07 июля 2010

yes он защищает от SQL-инъекций и безопасен как params [: user] is HASH

Вы можете проверить это с помощью следующего примера. Я предполагаю, что вы получаете некоторые недопустимые значения в параметрах [: user] [: name]

  @user= User.new(params[:user])

  @user.save

И

  @user= User.new()
  @user.name=params[:user][:name]  #your application may crash here or this is not sql injection safe
  @user.save

Чтобы избежать этого, вы можете использовать хэш

  @user= User.new({:name=>params[:user][:name]})
  @user.save

После прочтения это я пришел к выводу, что ни .new & .save не защищены от инъекций sql

Edited 

Функция массового назначения может стать проблемой, поскольку она позволяет злоумышленнику устанавливать атрибуты любой модели, манипулируя хешем, переданным методу new () модели:

ПОЖАЛУЙСТА, ПРОЧИТАЙТЕ 6 Mass Assignment для проблем и 6.1 Countermeasures для решения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...