我的 Controller 中有这行代码。
user = User.find_by_email(params[:email])
我应该担心这行代码的 SQL 注入(inject)吗?我见过的大多数 SQL 注入(inject)示例都涉及条件。我认为这是肯定的,但需要一些外部输入。
最佳答案
您只需在 SQL 片段方法中担心这个问题,例如 where()
、connection.execute()
或 find_by_sql()
,不过如果您想确保可以使用像 sanitize_sql()
这样的方法。我建议阅读this ,尤其是针对您的案例的第 8 节。
更新: 例如
User.find_by_email("'' OR 1--")
将评估为
SELECT "users".* FROM "users" WHERE "users"."email" = $1 LIMIT 1 [["email", "'' OR 1--"]]
这将被清理。
关于ruby-on-rails - Rails、SQL 注入(inject)和参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13756030/