我的控制器中有这行代码。
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--"]]
这将被消毒。