2009-10-17 5 views
0

Quand je fais une requête ...rails nuances record actifs et protection contre les attaques par injection

est-il une différence significative entre l'utilisation d'une aide de find_by ou non?

Y a-t-il des raisons pour lesquelles je néglige d'opter pour des lignes de code plus courtes lorsque je fais des choses comme ça?

Booking.find_all_by_user_id(1, :joins => :confirmation) 

Booking.find(:all, :joins => :confirmation, :conditions => [ 'bookings.user_id = ?', 1]) 

Répondre

3

Non, en ce qui concerne les attaques par injection. La méthode find_by devrait être sûre. Cependant, la seule erreur de tueur est d'utiliser l'entrée utilisateur directement dans votre conditions param lorsque vous utilisez la méthode find, comme faire:

Booking.find(:all, :joins => :confirmation, :conditions => [ 'bookings.user_id = #{params[user_id]]}']) 

Bien sûr, la bonne est la façon dont vous l'avez fait et find méthode va filtrer les choses.

Booking.find(:all, :joins => :confirmation, :conditions => [ 'bookings.user_id = ?', params[user_id]]) 
Questions connexes