2016-11-23 5 views
1

Я работаю над проектом Rails и использую Brakeman в качестве инструмента для отладки. Я использовал запрос для получения данных из таблицы, но во время теста Brakeman это указывает на возможность Sql Injection в запросе.Невозможно предотвратить запрос из SQL Injection in Rails

Вот мой запрос:

Applicant.all.where("profile_id=#{current_user.profile.id}").first 

Но я не знаю, что это проблема с этим запросом, если он не защищен, то как я могу предотвратить его от инъекции SQL?

+0

Вы отметили MySQL и SQL Server, какой из них? –

+0

Попробуйте этот Applicant.where ('profile_id =?', Current_user.profile.id) .first OR Applicant.where (profile_id: current_user.profile.id) .first –

+0

Проверьте это: http://guides.rubyonrails.org/ active_record_querying.html # pure-string-conditions –

ответ

4

USE это в соответствии с рельсами направлять правильный способ сделать это

Applicant.where('profile_id = ?', current_user.profile.id).first 

OR 

Applicant.where(profile_id: current_user.profile.id).first 

OR 

Applicant.find_by_profile_id(current_user.profile.id) 

OR 

Applicant.find_by(profile_id: current_user.profile.id) 
0

Я думаю, что вы ищете является:

Applicant.find_by(profile_id: current_user.profile.id) 

Когда вы читаете этот код легче понять что ты делаешь.