Ruby on rails Rails中的SQL注入

Ruby on rails Rails中的SQL注入,ruby-on-rails,sql-injection,Ruby On Rails,Sql Injection,我读了一些关于Rails中SQL注入的内容,但对我来说,事情还很不清楚。例如,我不明白下面列出的代码是否可以安全地进行SQL注入 User.where("first_name like ? ", "%#{params[:q]}%") 如果没有,还有什么选择?是的,这是安全的。ActiveRecord将在清理参数后使用一个新的方法来防止SQL注入 Rails指南提供了更多信息:你能解释一下什么是预先准备好的语句吗?他插入语句以添加%(通配符)。@Madalina数据库被告知有一组参数以及它们在什

我读了一些关于Rails中SQL注入的内容,但对我来说,事情还很不清楚。例如,我不明白下面列出的代码是否可以安全地进行SQL注入

User.where("first_name like ? ", "%#{params[:q]}%")

如果没有,还有什么选择?

是的,这是安全的。ActiveRecord将在清理参数后使用一个新的方法来防止SQL注入


Rails指南提供了更多信息:

你能解释一下什么是预先准备好的语句吗?他插入语句以添加
%
(通配符)。@Madalina数据库被告知有一组参数以及它们在什么位置。SQL随后被发送到带有占位符的数据库,因此无论参数是什么,它们都不能修改已经设置好的SQL。这可以防止攻击者将SQL代码放入参数中,从而改变语句的工作方式。Rails指南链接上的示例向您展示了如何实现这一点。刚才看到您使用%作为通配符,因此需要插值。