2013-08-19 4 views
0

Я запустил инструмент анализа статического кода (brakeman) в приложении rails и сообщил о некоторых уязвимостях SQL Injection, которые, как я подозреваю, могут быть ложными срабатываниями. Линии обижая выглядеть следующим образом:Возможно ли внедрение SQL?

#things_controller.rb 

def index 
    Thing.select(params[:columns]).where(params[:conditions]) 
end 

Я не могу понять способ использовать это, но это, кажется, довольно открытым, это достаточно безопасно (этот контроллер требует доступа администратора в любом случае), или это может быть злоумышленники?

Рубин 2.0.0-P247, Rails является 4.0.0

+0

Вы передаете необработанный пользовательский ввод в предложение 'where'. Это классический пример SQL-инъекции :) –

+0

Выбор на основе любого из столбцов не является проблемой (администратор может что-либо сделать), возможно ли подорвать логику для выполнения других операций SQL (UPDATE, DELETE и т. Д.) – Slicedpan

+0

Postgres водитель блуждает при моих попытках, но это вонючий код, по крайней мере. –

ответ

1

Хотя рельсы имеет некоторые встроенные фильтры для специальных символов, это, безусловно, уязвимы:

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

Если вы хотите протестировать его самостоятельно, выполните полное сканирование с помощью sqlmap с использованием URL-адреса этого действия с помощью параметра conditions GET

+1

yep sqlmap нашел что-то в порядке, приветствия – Slicedpan

+0

Вы были бы поражены тем, сколько вещей sqlmap находит нормально :) – bluehallu