ruby-on-rails - Rails 5,将参数传递给查询 - 它安全吗?
问题描述
以前可能有人问过,但我需要检查一下
AFAIK,这是安全的(Rails 5.1)
user = User.where(email: params[:user][:email]).first
如果不是,请告诉我为什么?
解决方案
从某种意义上说,它是安全的,您不需要转义或permit
参数。
- Rails 将自动转义参数以保护您免受 SQL 注入
- 您无需担心强参数或使用
permit
,因为您没有进行批量分配
所以代码将完全按照它所说的去做。
但是,它可能仍然是“不安全的”,因为调用此操作的人可以查询数据库中的任何用户。
通常,只有调用者经过身份验证并且允许查看数据库中的所有用户时,这才是安全的。否则任何人都可以快速检查哪些用户存在,甚至可能更糟。
推荐阅读
- ios - NSPersistentStoreCoordinator 和 NSManagedObjectContext 是什么关系?
- ios - 使视图可拖动但不可点击
- wordpress - 重力形式的中继器
- reactjs - redux 表单不更新选择字段
- angular - Angular CDK 拖放的拖放区指令
- c# - 来自请求的 SQL 查询中的列名
- python - OpenCV 可以像人眼一样找到主观轮廓
- laravel-5 - 使用 cleanDirectory 命令的 Laravel 任务调度程序权限问题
- javascript - 将 AWS 密钥保留在 Javascript 代码之外
- ms-access - VBA Access - Outlook 找不到通过 Access 分配任务的名称