ruby-on-rails - Rails、SQL 注入(inject)和参数

标签 ruby-on-rails ruby-on-rails-3 security sql-injection

我的 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/

相关文章:

ruby-on-rails - 使用 Rails 生成器修改现有文件?

mysql - 为什么数据库配置不起作用?

ruby-on-rails - 如何在不设置/覆盖现有默认帮助程序类的情况下将类添加到 ruby​​ on rails 中的表单?

ruby-on-rails-3 - ROR 路由描述中的 DRY

ruby-on-rails - RoR : PSQL to ruby - .加入

MySQL 递归查询

ruby-on-rails - Rails 3 : ActiveRecord observer: after_commit callback doesn't fire during tests, 但 after_save 确实触发

java - 通过Jsoup登录保存了吗?

c# - 带盐的 MD5 散列用于在 C# 中将密码保存在数据库中

javascript - Web 应用程序安全 : substitution of JavaScript code and data