我的控制器中有这行代码。
user = User.find_by_email(params[:email])
我应该担心这行代码的 SQL 注入吗?我见过的大多数 sql 注入示例都涉及条件。我认为这是肯定的,但需要一些外部输入。
我的控制器中有这行代码。
user = User.find_by_email(params[:email])
我应该担心这行代码的 SQL 注入吗?我见过的大多数 sql 注入示例都涉及条件。我认为这是肯定的,但需要一些外部输入。
您应该只需要在 SQL 片段方法中担心这一点where()
,connection.execute()
或者find_by_sql()
,尽管如果您想确保可以使用类似sanitize_sql()
. 我建议通读这个,最值得注意的是第 8 节。
更新:例如
User.find_by_email("'' OR 1--")
将评估为
SELECT "users".* FROM "users" WHERE "users"."email" = $1 LIMIT 1 [["email", "'' OR 1--"]]
这将被消毒。