SQL 注入 Rails 4 期
SQL injections in Rails 4 issue
我正在尝试了解 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.
您使用的是古老的 Rails 语法。不使用
find(:first, :condition => <condition>) ...
改为使用
User.where(<condtion>).first
find
接受要查找记录的 ID 列表。您为其指定了一个 ID :first
和一个 ID condition: ...
,它们不会匹配任何记录。
User.where(attr1: value, attr2: value2)
或单件商品
User.find_by(attr1: value, attr2: value)
请记住,在执行所有这些操作时,通过在查询方法的末尾添加 "to_sql" 来检查实际的 sql 语句是什么很有价值(据我所知, find_by 只做一个 LIMIT by 1)
我正在尝试了解 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.
您使用的是古老的 Rails 语法。不使用
find(:first, :condition => <condition>) ...
改为使用
User.where(<condtion>).first
find
接受要查找记录的 ID 列表。您为其指定了一个 ID :first
和一个 ID condition: ...
,它们不会匹配任何记录。
User.where(attr1: value, attr2: value2)
或单件商品
User.find_by(attr1: value, attr2: value)
请记住,在执行所有这些操作时,通过在查询方法的末尾添加 "to_sql" 来检查实际的 sql 语句是什么很有价值(据我所知, find_by 只做一个 LIMIT by 1)