Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道-这安全吗?使用URL参数查询数据库?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 轨道-这安全吗?使用URL参数查询数据库?

Ruby on rails 轨道-这安全吗?使用URL参数查询数据库?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,Rails是否会自动防止执行以下操作时出现的漏洞: 给定一个URL: 然后在rails控制器中 @comment = Comment.find(params[:id]) Rails会自动保护它吗?还是我需要做一些验证来保护应用程序免受黑客攻击 感谢ActiveRecord find将始终使用.to\u i来阻止所有SQL注入魔法 Rails还将在如下查询中自动转义: Comment.where(["id = ?", params[:id]]) 但在 Comment.where("id = #

Rails是否会自动防止执行以下操作时出现的漏洞:

给定一个URL:

然后在rails控制器中

@comment = Comment.find(params[:id])
Rails会自动保护它吗?还是我需要做一些验证来保护应用程序免受黑客攻击


感谢

ActiveRecord find将始终使用
.to\u i
来阻止所有SQL注入魔法

Rails还将在如下查询中自动转义:

Comment.where(["id = ?", params[:id]])
但在

Comment.where("id = #{params[:id]}")

对。如果您担心sql注入,它将使用您的参数并对其进行清理。但更好的方法是使用类似url的
http://a.com/31343231
。这很简单,但看起来更好

,所以我应该像上面那样进行所有查询吗?注释。where([“id=?”,params[:id]])或者我现在在q中的是ok吗?@AnApprentice:find您正在使用的是ok。但是(这是一个大的但是),当您使用字符串插值(id={params[:id]})构建小的SQL块时,请始终使用占位符格式(
“id=?”,params[:id]]
)除非您仔细验证了所有内容,否则您仍然可以使用SQL注入,即使这样,您仍然应该使用占位符来证明您的代码。它是否也会清理动态查找帮助程序,如
find_by_name(params[:id])
,还是最好使用where语句?@fl00r在url中查询数据库安全吗?使用查询字符串就像Im使用这个一样,最好是使用查询字符串进行查询,