Безопасное использования LIKE с шаблоном (wildcards) в запросах ActiveRecord Ruby on Rails 5 июля 2013 В запроса ActiveRecord важно обезопасить, изолировать (sanitize) значения, например: Record.where('field = ?', val).first Но в случае LIKE с шаблоном это не работает: Record.where('field LIKE %?%', val).first Следующий способ работает, но он не безопасен: Record.where("field LIKE '%#{val}%'").first Решение 1: Record.where('field LIKE ?', "%#{val}%").first Решение 2: Record.where('field LIKE CONCAT("%", ?, "%")', val).first Решение 3: Модификация небезопасного метода, приведенного выше. val = RecordClass.sanitize("%#{val}%") Record.where("field LIKE #{val}").first тема: Ruby on RailsRuby, Программирование, Верстка, MySQL, HTML, SEO, Дизайн, Графика, Интернет, сети, Администрирование, Безопасность, Разное дополнительноРабота одновременно с несколькими базами данных в Ruby on RailsStrong Parameters in Ruby on Rails 4Медленно, но верно: о прошлом, настоящем и будущем RubyОпределение первичного ключа id BIGINT PRIMARY KEY при создании модели (таблицы БД) ActiveRecord Ruby on RailsRuby on Rails: Не все так хорошо в "датском королевстве"
В запроса
ActiveRecord
важно обезопасить, изолировать (sanitize) значения, например:Но в случае LIKE с шаблоном это не работает:
Следующий способ работает, но он не безопасен:
Решение 1:
Решение 2:
Решение 3:
Модификация небезопасного метода, приведенного выше.