不导轨自动防止做类似的漏洞:Rails - 这是安全的吗?采用URL参数来查询数据库?
由于使用网址:http://a.com/?id=3131313131313
然后在轨道控制器
@comment = Comment.find(params[:id])
不Rails的自动保护的是,或做我需要做的一些类型的验证,以保护应用程序免受黑客攻击?
感谢
不导轨自动防止做类似的漏洞:Rails - 这是安全的吗?采用URL参数来查询数据库?
由于使用网址:http://a.com/?id=3131313131313
然后在轨道控制器
@comment = Comment.find(params[:id])
不Rails的自动保护的是,或做我需要做的一些类型的验证,以保护应用程序免受黑客攻击?
感谢
ActiveRecord的发现总是会使用.to_i
防止所有的SQL注入魔力。
的Rails也会自动逃逸的东西,在查询这样的:
Comment.where(["id = ?", params[:id]])
但不在
Comment.where("id = #{params[:id]}")
是。如果你担心sql注入,它会采取你的参数和消毒。但更好的方法是使用像http://a.com/31343231
这样的网址。制作起来相当简单,但看起来更好
它是否也会清理动态查找助手,如'find_by_name(params [:id])'还是更好地执行where语句? – iwasrobbed 2011-04-18 20:53:03
是的,它也会消毒它 – fl00r 2011-04-18 20:55:25
@ fl00r在url中查询数据库是否安全?使用查询字符串 – blackHawk 2016-12-11 07:47:20
所以我应该让我所有的问题像你一样? Comment.where([“id =?”,params [:id]]) 或者我现在在q好吗? – AnApprentice 2011-02-28 01:34:08
@AnApprentice:你使用的'find'没问题。但是(这是一个很大但是),当你使用字符串插值('“id =”“)构建小块SQL时,总是使用占位符格式('[”id =?“,params [:id] #{params [:id]}“')让你开放SQL注入,除非你已经仔细验证了所有的东西,甚至你仍然应该使用占位符来验证你的代码。 – 2011-02-28 02:47:59