繁体   English   中英

Rails:针对存储数组的安全查询

[英]Rails: safe query against stored array

我在对Postgres数据库中的数组字段执行where查询时遇到问题。
在我的rails应用程序中,我有一个名为People的表。 其中的一列称为pets 现在,此列包含数组值,即:

["dog", "cat", "fish"]

我想执行一个查询,例如返回所有拥有宠物狗的人。

到目前为止,我一直使用的解决方案

People.where("\"pets\" @> '{\"" + checkedPet + "\"}'")

其中checkedPet是变量,可以是“狗”或任何其他动物。

这可行,但我感觉很容易受到SQL注入问题的影响?
是这样吗 如果是这样,那么有什么更好,更安全的方法来避免这种情况?

根据ActiveRecord和PostgreSQL指南,您可以执行以下操作:

People.where('? = any("pets")', checkedPet)

要么

People.where('"pets" @> ?', "{#{checkedPet}}")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM