D.
@worlak2 Это не select, а create table.
Alex
Именно
пожалуйста не неси хуйни, ладно?
Kop
пожалуйста не неси хуйни, ладно?
Вы хотите поспорить насчёт овасп топ?
Kop
Или скл инъекций ?
D.
На селекте используется placeholder
Костянтин
Или скл инъекций ?
я бы послушал
Костянтин
спорьте
Kop
Изначально это является плохим ходом, потому что данные туда могут попасть разные и при недостаточной обработке будут не лучшие результаты из-за такой *хуйни* которую вы делаете
Enot
спорьте
https://memepedia.ru/wp-content/uploads/2018/01/j8ufbixp.jpeg
Alex
Вы хотите поспорить насчёт овасп топ?
нет, я хочу сказать что ты идиот и не понимаешь разницы между unsafe данными и данными, полученными на основе твоего же кода (как-то структура твоего же класса) и таки если мы говорим про аля ORM и построение запроса, то ты ну никак не уйдешь от генерации запроса строковыми операциями.
Alex
другой вопрос в том, что даже данные взятые из кода неплохо бы дополнительно валидировать.
Alex
поэтому вместо того чтобы петь мантру - строковые операции плохо, лучше бы включить мозг и научиться понимать смысл.
Kop
нет, я хочу сказать что ты идиот и не понимаешь разницы между unsafe данными и данными, полученными на основе твоего же кода (как-то структура твоего же класса) и таки если мы говорим про аля ORM и построение запроса, то ты ну никак не уйдешь от генерации запроса строковыми операциями.
Я хотел отметить что данный подход является не самым подходящем, так как если вы работаете с командой и кто-то недобросовестный передаст туда что-то, то выйдет не самое подходящее в связи с чем подобные данные необходимо было бы предварительно обработать, дабы избежать всяческих ошибок. Меня обеспокоило то, что вы 100 процентов доверяете тому что написано, не предусматривая что с этим кто-то может еще и работать
Tishka17
ну передаст, это вылезет в тестах
Kop
а по твоему ORM работают не так?
так, но я предполагаю там минимальные обработки присутствуют
Tishka17
вообще конечно имено колонок надо нормализовать, да
Tigran
даже твой код?
иногда и из кода лучше не надо несекьюрно инъектить, сегодня доверенный, а завтра вызов твоего метода кто-нибудь к своему эндпоинту прикрутил
Tishka17
но от формата никуда не денешься
Tigran
ну ясное дело
Alex
об этом и речь
Tigran
просто нужно всегда типобезопасный формат делать со всеми эскейпами
Tigran
или о чём срач?
Alex
срачь об безапеляционном заявлении "никогда не используйте форматные строки для построения SQL"
Nikolay
F
Tishka17
вообще, create table надо просто руками писать, а не долбить генерацию
Kop
но от формата никуда не денешься
моя ошибка что сказал про формат не рассмотрев до конца запрос, мельком пока листал. Показалось что это селект или како либо инсерт. Поэтому сделал замечание, что такие вещи в формат не стоит пихать
Tigran
ну, без слоя эскейпинга и правда не надо использовать
Tigran
я думаю, вы к словам придираетесь, короч
Tishka17
вообще я склонен согласиться - нефиг юзать формат для SQL.
Alex
вообще я склонен согласиться - нефиг юзать формат для SQL.
тут есть нюансы, для новичков - да это табу. но ты никуда не денешься от формата в том или ином виде, например если тебе нужно собрать динамический запрос руками с идентификатормами получаемыми программно. и если, к примеру, psycopg2 тебе предоставляет безопасный query builder, который по факту тот же формат на стероидах, то другие движки - нет
Alex
если ты берешь те же данные из константы рядом, я не вижу проблемы использовать формат.
Tishka17
у меня щас в проекте db.query(some_wrapper%(base_query % condition), (blabla, …))
Alex
ты в первую очередь должен понимать откуда данные приходят.
Kop
если ты берешь те же данные из константы рядом, я не вижу проблемы использовать формат.
я думаю ты хочешь донести мысль что можно пихать если правильно обработать, ведь так и происходит в том же psycopg2 при передаче. Я считаю что ты тут прав и так и нужно делать.
Alex
и если у тебя программист-зловред в команде засунул SQL-inj намеренно, то ты ну никак от этого не защитишься, кроме код-ревью и тестов.
Alex
я думаю ты хочешь донести мысль что можно пихать если правильно обработать, ведь так и происходит в том же psycopg2 при передаче. Я считаю что ты тут прав и так и нужно делать.
да, или если ты к примеру запрос по кусам собираешь. есть разница между данными, которые ты контролируешь и которые нет.
Alex
сорян, за грубость в отношении безапеляционных заявлений.
Kop
сорян, за грубость в отношении безапеляционных заявлений.
Рад что мы пришли к общему выводу, просто поняли неправильно друг друга
brestows
Подскажите, а нормальная ли практика вьюхи которые должны быть закрыть паролем наследовать от LoginRequiredMixin ?
brestows
или есть более адекватное решение
Tishka17
я ж предлагал мидлварю
Tishka17
или не тебе?
brestows
Django
brestows
я просто читаю
brestows
и смотрю)
Denis
Но закрыты паролем это скорее про SuperuserRequiredMixin
brestows
я только изучаю Python и Django так что, естественно не все понимаю и не все возможности вижу.
brestows
Нормальная
Мне надо что бы сайт был доступен только после авторизации пользователя
Denis
Если весь сайт, то лучше мидлварь
brestows
Если весь сайт, то лучше мидлварь
а где про это почитать ?
Maxim
Мне нравятся относительные импорты в пределах пакета
brestows
сомневаюсь что до меня этого не делали)
Denis
а где про это почитать ?
https://docs.djangoproject.com/en/2.2/topics/http/middleware/
Tishka17
сомневаюсь что до меня этого не делали)
Там десять строк, конечно делали
Tishka17
Я даже ссылку давал
brestows
Там десять строк, конечно делали
Получается пишешь прослойку, и она будет проверять все, а все остальное пишешь словно и не требуется праоль ?
Tigran
блин, клёвое слово «праоль»
Maxim
это мама Оли
Maxim
или нескольких Оль
Maxim
(или папа)
Tigran
ваша праоль скомпрометирована
Tigran
срочно поменяйте праоль
Maxim
"Оля! Что там твоя мама опять в интернете творит?!"
Artyem
может это глагол
Maxim
а может, глагол с ошибкой
Maxim
и правильно писать "прооль"