Насколько я понимаю, «преобразование поверхностного ключа» относится к процессу преобразования ключа с двойным подчеркиванием, например Dog.objects.filter(data__owner__name='Bob')
, в соответствующий синтаксис SQL, что-то вроде ... WHERE "data" -> 'owner' -> 'name' = 'Bob'
Уязвимость безопасности, связанная с этим CVEИмеется в виду, что вы можете создать ключ, который будет передан в базу данных, как, например:
JSONModel.objects.filter(**{
"""field__test' = '"a"') OR 1 = 1 OR ('d""": 'x',
})