我似乎找不到任何资源来解释Django内置的复杂查询(Q对象或F对象)的安全性。是否可以在这些查询中注入SQL攻击?我做了一个小测试:
from models import *
from django.db.models import Q
q = MyModel.objects.filter(Q(mycolumn__contains='%; DROP DATABASE mydatabase;'))
print q
>>> []
print q.query
>>> SELECT `mydatabase_mytable`.`mycolumn` FROM `mydatabase_mytable` WHERE
`mydatabase_mytable`.`mycolumn` LIKE BINARY %\%; DROP DATABASE mydatabase;%
但这似乎并未删除我的数据库。这里发生了什么?