我正在尝试了解SQL注入,并尝试实现这些注入,但是当我将这段代码放入控制器时:
params[:username] = "johndoe') OR admin = 't' --"
@user_query = User.find(:first, :conditions => "username = '#{params[:username]}'")我得到以下错误:
Couldn't find all Users with 'id': (first, {:conditions=>"username = 'johndoe') OR admin = 't' --'"}) (found 0 results, but was looking for 2)我已经创建了一个用户名为"johndoe“的用户模型,但我仍然没有得到适当的响应。顺便说一下,我使用的是Rails 4。
发布于 2015-07-17 03:55:21
你在使用一种古老的Rails语法。不要用
find(:first, :condition => <condition>) ...相反,使用
User.where(<condtion>).firstfind接受要查找记录的ID列表。您给它一个:first的ID和一个condition: ...的ID,这与任何记录都不匹配。
发布于 2015-07-17 07:23:04
User.where(attr1: value, attr2: value2)或用于单一项目
User.find_by(attr1: value, attr2: value)请记住,在执行所有这些操作时,通过在查询方法的末尾添加"to_sql“(据我记得,find_by只执行1的限制)来检查实际的sql语句是很有价值的。
https://stackoverflow.com/questions/31468093
复制相似问题