The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Уязвимость в web-фреймворке Django, которая может привести к подстановке SQL-кода, opennews (??), 04-Июл-22, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


6. "Уязвимость в web-фреймворке Django, которая может привести к..."  –7 +/
Сообщение от Аноним (6), 04-Июл-22, 16:06 
У меня конструкции вида select(func.max(text("cast(key as integer)")),text('value')).select_from(cls, func.json_tree(cls.relations)).where(text("key and json_type(key) == 'integer' and type=='object'")) всё норм, ничего не бомбит. Легко читается, даже легче, чем чисто sql. Вы что-то делаете не так.
Ответить | Правка | Наверх | Cообщить модератору

8. "Уязвимость в web-фреймворке Django, которая может привести к..."  –2 +/
Сообщение от Аноним (6), 04-Июл-22, 16:11 
Кстати, там то же самое рядом через ORM, если это зло и намного хуже, то я даже не знаю ем тут помочь.

maxvalue = max([int(k) for k in self.relations])
return (maxvalue, self.relations[str(maxvalue)],)

а вот это orm-sql

return select(func.max(text("cast(key as integer)"))).select_from(cls, func.json_tree(cls.relations)).where(text("key and json_type(key) == 'integer' and type=='object'"))

ну и где читаемее?

Ответить | Правка | Наверх | Cообщить модератору

25. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Без аргументов (?), 04-Июл-22, 19:54 
везде нифига не понятно.
интересно, как это будет работать, если строк миллион. а можно ли передать ему подсказку, в каких случаях использовать и какие индексы? нет.
Ответить | Правка | Наверх | Cообщить модератору

31. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Аноним (6), 04-Июл-22, 20:19 
Прекрасно это работает. Откуда там миллиону взяться, если поле с жсоном обновляется пару раз в месяц? Причём, используется всегда только последнее значение, старые данные остаются для истории. Тут никаких проблем быть не может.
Ответить | Правка | Наверх | Cообщить модератору

48. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от ПерлухаБратуха (?), 05-Июл-22, 04:46 
> тут никаких проблем быть не может.

Вот так и начинаются кадастрофы.

Ответить | Правка | Наверх | Cообщить модератору

53. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Аноним (6), 05-Июл-22, 13:44 
В данном случае это костыль, позволяющий избежать бессмысленного усложнения схемы и заполнения таблиц неконсистентными бесполезными данными. Никогда не поздно мигрировать на новую версию, при необходимости, однако, до сих пор не вижу ровно никаких предпосылок.
Ответить | Правка | Наверх | Cообщить модератору

39. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Онаним (?), 04-Июл-22, 22:11 
max([int(k) for k in self.relations]) - это какая-то хитрая чёрная магия?
Или просто у нас все объекты предвгружены? А если их там 100500000 и каждый по килобайту размером?
В жирных специфично сдизайненных контейнерах ORM получится что-то типа self.relations.getMaxByKey('k'), тогда уже да, никакой магии, просто эксплицитная поддержка.
Ответить | Правка | К родителю #8 | Наверх | Cообщить модератору

40. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Онаним (?), 04-Июл-22, 22:13 
Но если к max() надо ещё условие присандалить, то будет получаться шиза вида self.relations.getSubCollection(...conditions).getMaxByKey('k'), и это шиза.
Ответить | Правка | Наверх | Cообщить модератору

43. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Аноним (6), 04-Июл-22, 22:45 
Это именно получение последнего по времени объекта из жсона, с ним можно работать как с обычным хеш тейблом. Только возвращает всё текстом, мне не понравился вариант пропатчить на поддержку других типов. При необходимости, он сначала подгружается (целиком, там undefer, да). Изменений там от 0 до нескольких за месяц, содержит категории и ссылки на данные (которые не обязательно имеются в одной из таблиц). Мне показалось это подходящим для моих задач, но я так и не смог нагуглить ничего даже отдалённо похожего. Потом можно будет скидывать старые данные куда-нибудь на диск, это же жсон.
Ответить | Правка | К родителю #39 | Наверх | Cообщить модератору

24. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Без аргументов (?), 04-Июл-22, 19:52 
Я ничего тут не понял что там у вас про JSON. Я говорю про человеческую нормализованную СУБД.
Но сразу виду обезьянокод. Какие-то двойные преобразования типов из текста в число. И еще макс можно сделать в одном запросе без вложения.
Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

30. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Аноним (6), 04-Июл-22, 20:16 
Да не, тут нормально всё. Это json в sqlite, надо получить последнюю по времени запись из поля с жсоном, ключи в котором принудительно конвертируются в текст, а значит, последнее значение из текстового ключа не получить. Я это к тому, что даже если ORM не позволяет решить не стандартную задачу адекватно (вставки text), это всё ещё вполне прилично выглядит в результате, куда лучше чем голый зубодробительный sql с сотней уязвимостей на запрос.
Ответить | Правка | Наверх | Cообщить модератору

45. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Без аргументов (?), 05-Июл-22, 00:03 
Ну я же говорю, что это детский садик. Другое дело когда у вас оракл и 120ГБ ОЗУ и пол терабайта данных продаж с тысячи магазинов за пол года перелопатить надо.
Ответить | Правка | Наверх | Cообщить модератору

46. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Аноним (6), 05-Июл-22, 00:11 
Так если бы там были какие-то данные, я бы как минимум не стал использовать жсон в sqlite. Речь то совсем о другом. Я сомневаюсь, что перелопачивать пол терабайта надо прям на каждый запрос (для такого памяти маловато опять же), а значит, не исключено, что орм тут себя прекраснейшим образом проявит.
Ответить | Правка | Наверх | Cообщить модератору

49. "Уязвимость в web-фреймворке Django, которая может привести к..."  –2 +/
Сообщение от GG (ok), 05-Июл-22, 10:53 
ОРМ нужен не для того чтобы неадекватную архитектуру покрывать.
Если кто-то модель данных спроектировал так что там без такого геморроя велосипедов запрос не сделать — надо гнать его ссаными тряпками из профессии и переделывать нормально, а не городить вот это вот.
Ответить | Правка | К родителю #30 | Наверх | Cообщить модератору

55. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Аноним (6), 05-Июл-22, 14:39 
Хех, но ведь это же вообще не имеет отношения к ORM, претензия должна быть к SQL (ну или к json).
Ответить | Правка | Наверх | Cообщить модератору

56. "Уязвимость в web-фреймворке Django, которая может привести к..."  +1 +/
Сообщение от Аноним (56), 06-Июл-22, 03:13 
На практике в нормализованных БД слишком много джойнов, даже если это база микросервиса с довольно узкой зоной ответственности. Поэтому денормализация до второй формы
и требования к "академичности" пониже и код пожиже. Зато работает в рамках заданного SLA.
Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

67. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Онаним (?), 08-Июл-22, 00:03 
Ха. Да. Дальше второй формы уходить - это уже для особых случаев. Когда не жалко.
Ответить | Правка | Наверх | Cообщить модератору

37. "Уязвимость в web-фреймворке Django, которая может привести к..."  +1 +/
Сообщение от Онаним (?), 04-Июл-22, 22:07 
Глаза чутка подвытекли.
Я уж за производительность этого добра даже не переживаю.
Каждый вызов функции - это офигенные накладные расходы даже в компилируемом языке, чем и плохи все генераторы.
В компилируемых такие вещи хотя бы заинлайнить можно, но в скриптовых всё очень плохо.
Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

44. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Аноним (6), 04-Июл-22, 22:52 
Кстати, с производительностью всё удивительно хорошо в итоге. Ну и оно же кэшируется. С диска долго, в памяти нормально, никаких претензий. Проблемы начинаются, когда генерирует что-то не то.
Ответить | Правка | Наверх | Cообщить модератору

38. "Уязвимость в web-фреймворке Django, которая может привести к..."  +1 +/
Сообщение от Онаним (?), 04-Июл-22, 22:07 
Хотя конечно после cast(key as integer) там уже точно ничего не страшно
Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

61. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Аноним (61), 06-Июл-22, 19:50 
> всё норм, ничего не бомбит

особенно тут:
> where(text("key and json_type(key) == 'integer' and type=='object'"))

Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

62. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Аноним (6), 06-Июл-22, 20:08 
Разве что, чуточку. Но в SQL это выглядело не лучше и позволяло выполнить подстановку чего-нибудь нехорошего в 5 местах, а тут не получится.
Ответить | Правка | Наверх | Cообщить модератору

68. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Аноним (68), 09-Июл-22, 17:02 
> позволяло выполнить подстановку чего-нибудь нехорошего

Не понял, ты на код глазами смотришь или чем? Про возможность эскейпинга подставляемых значений безо всяких ормов что-нибудь слышал?

Ответить | Правка | Наверх | Cообщить модератору

66. "Уязвимость в web-фреймворке Django, которая может привести к..."  +/
Сообщение от Аноним (66), 07-Июл-22, 18:38 
>Вы что-то делаете не так.

Да, я, например, хочу строить запросы одинаково на любом рантайме.

Ответить | Правка | К родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру