gpt4 book ai didi

ruby-on-rails - 如果字符串包含 ruby​​ 命令,如何评估 ruby​​ 中的字符串?

转载 作者:太空宇宙 更新时间:2023-11-03 17:41:30 25 4
gpt4 key购买 nike

就我而言,

我将 sql 查询作为文本存储在我的数据库中。我正在向您展示一条存在于我的数据库中的记录

查询.all

:id  => 1, :sql => "select * from user where id = #{params[:id]}"

str = Query.first

现在 'str' 的值为“select * from user where id = #{params[:id]}”

在这里,我想像这样解析字符串如果我的 params[:id] 是 1 那么

“从 id = 1 的用户中选择 *”

我使用了 eval(str)。这是正确的吗?

最佳答案

eval 会执行您在本例中描述的操作。然而,这是一个非常糟糕的主意,因为它容易受到 SQL injection 的影响。 .例如考虑如果 params[:id] 等于“1;从查询中删除 *”会发生什么。

如果您需要一种在数据库中存储任意查询的方法,您最好存储查询的参数化版本:

select * from user where id = ?

eval 参数分开。

关于ruby-on-rails - 如果字符串包含 ruby​​ 命令,如何评估 ruby​​ 中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2431299/

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