我有一个ActiveRecord查询:
Post.where(users: [])
在Rails 5.1.1中,结果为:
SELECT `posts`.* FROM `posts` WHERE (users = '[]')
但是在Rails 5.2.2中,结果为:
SELECT `posts`.* FROM `posts` WHERE 1=0
有人知道这是Rails 5.2中预期的行为还是bug?
答案 0 :(得分:1)
这不是bug,已更新5.2.2以消除SQL注入问题。
const string pKey = "-----key-----"
byte[] publicKeyBytes = Convert.FromBase64String(pKey);
var stream = new MemoryStream(publicKeyBytes);
Asn1Object asn1Object = Asn1Object.FromStream(stream);
如果您观察到此查询,我们将遇到一个SQL注入问题,即如果您传递某个查询而不是值,那么它将通过。太危险了您可以使用以下代码根据具有where条件的数组对象检索数据。
SELECT `posts`.* FROM `posts` WHERE (users = '[]')