Ruby on rails 轨道-这安全吗?使用URL参数查询数据库?
Rails是否会自动防止执行以下操作时出现的漏洞: 给定一个URL: 然后在rails控制器中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 = #
@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使用这个一样,最好是使用查询字符串进行查询,