gpt4 book ai didi

sql - Rails 和 SQL 注入(inject) : Is this safe?

转载 作者:搜寻专家 更新时间:2023-10-30 22:18:10 24 4
gpt4 key购买 nike

@usersfound = User.find_by_sql(["

SELECT * from users where name @@ plainto_tsquery('english', ?) LIMIT 20 offset ?

",@query,@offset])

见上文,这对 sql 注入(inject)安全吗?我对在 rails 中的数据库上执行直接 sql 命令非常陌生。 (我知道可能还有其他方法可以执行此 SPECIFIC 查询,但我想知道一般情况下,使用 find_by_sql 和那种类型的 vars 插入是否安全 - 我有一些困难的子选择和连接查询确实可以做到使用 ActiveRecord。

谢谢。

最佳答案

是的,那应该是安全的。如果您跟踪代码,您会发现您的 find_by_sql 调用最终调用了 PGconn#send_query_prepared。绑定(bind)参数仅作为行李携带; send_query_prepared 方法只是 PQsendQueryPrepared API call in libpq 的包装器:

static VALUE
pgconn_send_query_prepared(int argc, VALUE *argv, VALUE self)
{
/* ... bunch of boiler plate marshalling stuff ... */
result = PQsendQueryPrepared(conn, StringValuePtr(name), nParams,
(const char * const *)paramValues, paramLengths, paramFormats,
resultFormat);
/* ... */
}

绑定(bind)参数在 paramValues 中结束。所以你应该没问题,除非 PostgreSQL 的 C 库准备语句处理中存在错误。

关于sql - Rails 和 SQL 注入(inject) : Is this safe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8363473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com