Предотвращение SQL-инъекций / хороший метод Ruby - PullRequest
5 голосов
/ 13 февраля 2010

Что такое хороший метод в Ruby для предотвращения SQL-инъекций?

Ответы [ 5 ]

7 голосов
/ 13 февраля 2010

в прямом рубине? используйте подготовленные заявления:

require 'mysql'
db = Mysql.new('localhost', 'user', 'password', 'database')
statement = db.prepare "SELECT * FROM table WHERE field = ?"
statement.execute 'value'
statement.fetch
statement.close
3 голосов
/ 13 февраля 2010

Ознакомьтесь с руководством по этому вопросу: http://guides.rubyonrails.org/security.html#injection

По сути, вы хотите использовать переменные связывания в своих моделях для поиска данных, а не встроенные параметры ..

Model.find(:first, :conditions => ["login = ? AND password = ?", entered_user_name, entered_password])
3 голосов
/ 13 февраля 2010

Не только в Ruby - привязывайте свои параметры (будь то в базе данных или в коде вашего клиента).

0 голосов
/ 05 июля 2017

Ссылки на эту тему:

http://www.ruby -forum.com / тема / 90258 # новый

http://www.ruby -forum.com / тема / 82349 # 143790

Метод find () ActiveRecord имеет встроенные способы избежать внедрения SQL используя формат

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

Существует ли такая система для избежания инъекций по порядку? Кажется только взять строку и передать ее в оператор SQL. Это вызывает уязвимость при использовании параметров для установки: порядок как в этой функции:

     def list
sort_by = params[:sort_by]
@book_pages, @books = paginate :books,
                               :order => sort_by,
                               :per_page => 10
    end

Мы пробовали несколько методов для дезинфекции sort_by, таких как order => ['?', sort_by], но он просто передает это в оператор SQL как плоский массив. «Спасение магии» не работает для порядка. Должен ли я использовать GSUB! очистить параметры [: sort_by]?

0 голосов
/ 18 ноября 2012

Согласно http://ruby.railstutorial.org/ вы можете предотвратить подделку межсайтовых запросов, вставив

<%= csrf_meta_tags %>

тег в шапке app / views / layouts / application.html.erb.

Прямая ссылка примера

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