2

我的控制器中有这行代码。

user = User.find_by_email(params[:email])

我应该担心这行代码的 SQL 注入吗?我见过的大多数 sql 注入示例都涉及条件。我认为这是肯定的,但需要一些外部输入。

4

1 回答 1

2

您应该只需要在 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--"]]

这将被消毒。

于 2012-12-07T03:24:36.890 回答