1037

Execute immediate

Execute immediate

Наконец-то шутка не для разработчиков бэк или фронт-энда, а для разработчиков БД.

IT-юмор

7.1K пост53.2K подписчиков

Правила сообщества

Не публикуем посты:
1) с большим количеством мата
2) с просьбами о помощи
3) не относящиеся к IT-юмору

Вы смотрите срез комментариев. Показать все
66
Автор поста оценил этот комментарий

Блин, классный пост, но боюсь, что потонет в общей ленте.. А для переноса в сообщество IT юмора у тебя не хватает рейтинга, нужно 250. Обидно :(

раскрыть ветку (54)
18
Автор поста оценил этот комментарий

А сразу нельзя в нужное сообщество поместить? Ну или модератора тогда уж позвать.

В общей ленте он утонет совершенно заслуженно.

раскрыть ветку (26)
21
Автор поста оценил этот комментарий

Я как раз адмодер в том сообществе, но у человека не хватает рейтинга для переноса. В сообществе настроено ограничение на минимальное количество рейтинга у пользователя в 250.

раскрыть ветку (25)
10
Автор поста оценил этот комментарий

А почему выбрали 250, а не 256, чтобы отдать дань традиции?

3
Автор поста оценил этот комментарий

Как всё сложно там у вас

раскрыть ветку (23)
3
Автор поста оценил этот комментарий

@stavropol, категорически приветствую. Может отменим порог для пользователей в 250 рейтинга? Мне кажется, что проблем не должно возникнуть.

раскрыть ветку (22)
11
Автор поста оценил этот комментарий

Думаю, не стоит этого делать. Когда это сообщество только появилось, сюда стали новореги лить всякое гуано, пришлось включить премодерацию. Потом, из-за того, что я не мог оперативно посты модерировать, пришлось сделать порог 250 рейтинга. Зато соотношение постов к количеству подписчиков у нас одно из самых лучших (если не лучшее). 250 не такой уж большой рейтинг. Если не ошибаюсь, при регистрации дают 100 или 200.

Если есть другие аргументы в пользу отмены, пишите.
@Sonad, @EHOTnOTACKYH

раскрыть ветку (18)
6
Автор поста оценил этот комментарий

Хм, могу в пользу этого решения высказать то, что я нахожусь на сайте довольно часто и могу оперативно реагировать на неформат. С другой стороны, порог в 250 рейтинга действительно не так высок, а я весьма и весьма редко сталкиваюсь с постами в общей ленте, которые нельзя перенести из-за рейтинга.


UPD: Заметил, что пост был перенесен в соо. Администраторы могут переносить посты минуя ограничение или оно просто на время было снято и потом сразу возвращено?

раскрыть ветку (12)
17
Автор поста оценил этот комментарий

Я перенес вручную пост. Убрал на время ограничение, перенес, снова включил :)

раскрыть ветку (11)
5
Автор поста оценил этот комментарий

Блин, я уж понадеялся, что у вас больше прав на это дело. Жаль.

В целом, я согласен, что ради нескольких постов в месяц нет смысла снимать ограничение. За пост обидно было..

раскрыть ветку (10)
10
Автор поста оценил этот комментарий

Думаю, пост в горячее попадет. Завтра укажу его в качестве источника в паблике ВК.

раскрыть ветку (9)
5
Автор поста оценил этот комментарий
А почему адмодеры не могут по собственному желанию переносить посты, игнорируя рейтинг? Может тогда позвать саптеха и попросить сделать ограничение именно для ТС-ов, а перенос адмодерами сделать без ограничений? С другой стороны не так уж и сложно на 10 секунд снять и убрать ограничение, да и подобных постов крайне мало.
раскрыть ветку (7)
1
Автор поста оценил этот комментарий

Пост попадёт в Лучшее

(я в будущем подсмотрел)))

1
Автор поста оценил этот комментарий

Я согласен, 250 не настолько большой рейтинг, и даже при этом ограничении умудряются часто заливать откровенную дичь. Да, @Sonad часто реагирует быстрее нас, но не всегда же. Во всяком случае, я пусть и не часто, но довольно регулярно выношу посты в общую ленту.

0
Автор поста оценил этот комментарий
Потом, из-за того, что я не мог оперативно посты модерировать, пришлось сделать порог 250 рейтинга.

Лучше добавить модераторов.

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Тогда не было ни одного, сейчас 2 новых появилось.

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

мало кмк

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

На полтора поста в день смысл кучу модераторов назначать? Хотя, если открыть всем доступ, шлак лить начнут, придется как в свежем сидеть. Только есть ли смысл в этом.

2
Автор поста оценил этот комментарий

Отменяйте, раз уж через меня совета спрашиваете. Я не против)

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Кхм, да я просто под комментом не глядя позвал админов сообщества )

1
Автор поста оценил этот комментарий

Один призыв отклеился: @EHOTnOTACKYH

6
Автор поста оценил этот комментарий

Какой-то профессиональный юмор

раскрыть ветку (7)
6
Автор поста оценил этот комментарий

Настолько проффесиональный, что без тегов не понятен, хотя с t-sql работаю уже 13 лет.

Сначала думал, что ему знания sql привили

раскрыть ветку (6)
3
Автор поста оценил этот комментарий

Что происходит в комиксе? После обновления(прививки) SQL исчез рабочий стол? Такое случается?

раскрыть ветку (5)
21
Автор поста оценил этот комментарий

Гугли "SQL-иньекция". Его взломали и удалили таблицу (в английском table - стол).

раскрыть ветку (3)
8
Автор поста оценил этот комментарий
я думал что стол должен лежать на боку, из-за drop table, если ударяться в буквальность
Автор поста оценил этот комментарий

Разве врач подразумевает взлом? Оо

раскрыть ветку (1)
7
Автор поста оценил этот комментарий

Иньекция подразумевает взлом.

7
Автор поста оценил этот комментарий

В sql есть такая тема как инъекция. Это внедрение вредоносного кода в текстовые поля в интерфейсе.

Например, если клиент, веб-сервер или сервер приложений сам формирует исполняемый sql код, а не использует процедуры, или же если в процедурах sql на основе текстовых данных от клиента формируется динамический код. И при этом доступ к БД настроен так что всем всё можно. То есть риск инъекций.

Например, у тебя в клиенте есть следующий код:


sql="select * from table1 where id='"+idValue+";'";


Где sql - строка с кодом, который выполняется на сервере sql, a idValue - значение из текстового поля, который вводит пользователь

Тогда злоумышленник может сделать так, что в переменной sql будет, например, храниться:

select * from table1 where id=''; drop table table1; select ''


Шутка в том, что ему с помощью инъекции запустили drop table(команда удаления таблицы), по английски table - это как таблица, так и стол.

0
Автор поста оценил этот комментарий

А можно пояснительную бригаду попросить?

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Она уже приезжала ) Объяснения есть тут: #comment_197077696

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Спасиб)

Автор поста оценил этот комментарий

Вообще-то SQL-ъекции - это как раз про криворукость бэкендеров. Причем тут разработчики БД?

раскрыть ветку (15)
Автор поста оценил этот комментарий

При том, что это не бэкендеров дело писать запросы и хранимки с ними. Только плиз, не надо писать про орм.

раскрыть ветку (14)
Автор поста оценил этот комментарий

В смысле не бэкендеров? А чьё же? Фронтендеров? Или бэку SQL специальные люди писать должны для взаимодействия с БД? Вот это сегрегация!

Если у тебя в проекте такая ДЫРИЩА в бэке, что туда пользователь может просунуть свой... SQL-запрос, то тут не DBA виноват, а косорукий программист, который не понимает, что такое валидация параметров, как правильно экранировать входные данные в SQL и как правильно пользоваться API используемой БД.

раскрыть ветку (13)
Автор поста оценил этот комментарий

Как-то у тебя все так намешано, что я уже пожалел что взялся отвечать. Приплел зачем то ДБА, хотя они тут вообще не при чем. Почему то предположил что должны писать фронтендеры, хотя в посте прямо указано кто это должен делать (да и в твоем первом сообщении тоже). Упомянули какие то АПИ к базам данных, которого в некоторых случаях просто не существует. У СУБД Оракл такого точно нет. И что не так в специальных людях для написания логики работы с данными, я так и не понял. Для меня слово "сегрегация" не ругательное. Или разделение на бек и фронтенд - тоже зло?

раскрыть ветку (12)
Автор поста оценил этот комментарий

Ок, фронтендера я помянул в сердцах. Но в посте-то речь про SQL-инъекции. Причем тут логика внутри СУБД?
Делать так, чтобы SQL-инъекции были невозможными - это задача бэкенд-разработчика. АПИ у БД, конечно же, есть у любой. Для чего бы кому-то пригодилась база данных без интерфейса? На всякий случай напомню, что интерфейс - это не обязательно что-то графическое. В данном случае API - это программный интерфейс и работать он может через вызовы функций динамической библиотеке или через промежуточный биндинг к тому или иному языку. В конечном итоге почти любая современная БД обычно предосталяет API через TCP-соединение.
Но давайте всё же подумаем какие такие SQL-инъекции могут оказаться на совести разработчика БД... Вообще тот еще вопрос что разрабатывает этот разработчик в отрыве от бэкенда. Струкутуру? Связи? Индексы? Ок. Засовывает бизнес логику в хранимые процедуры (такая себе идея, конечно, особенно если это все живёт вне системы контроля версий)?

Короче, если пользователи могут подать куда-то на вход данные, которые поломают нормальную работу SQL сформировав недопустимый запрос, то это проблема бэкенд разработчика, который неправильно работает с API БД или техлида проекта, который допустил прямой доступ пользователей к выполнению запросов в БД, а разработчик хранимок наваял там такой логики, что без должного экранирования наконкатенировал там запросов, способных при должной инъекции поломать всё.

раскрыть ветку (11)
0
Автор поста оценил этот комментарий

Что живет вне системы контроля версий, а что внутри, вообще не должно влиять на архитектуру систему, это сугубо проблемы разрабов и и удобство их работы. Писать говно код потому что так удобнее, как раз таки и есть так себе идея. Код из хранимок вполне нормально хранится в системах контроля версий, потому что представляет собой обычный текст.


Ничто лучше субд не справляется с работой с данными, поэтому всю логику работы с данными как раз таки должно хранить на уровне субд, если эта логика обещает быть сколько-нибудь сложной (а она почти всегда становится такой, когда у заказчика возникает больше хотелок). А ведь есть еще процессы, который должны запускаться регулярно по ночам (джобы, короче говоря), их тоже выносить из хранимок и хранить то что работает только в бд за пределами этой самой бд? Как тебе такая идея? А как тебе идея хранить в бэк енде функции, которые используются в фильтрах запроса? А если они используются в function-based индексах? А если функция кроме как в запросах больше нигде не используются и ей не плохо нацепить pragma udf, такую тоже хранить на бэк енде?


И именно разработкой этих хранимок и занимается разработчик БД. И я никогда не называю хранимки как API к базе, так как они являются таким же кодом проекта как и все остальное и оно не поставляется вместе с субд. И эти хранимки сложно использовать коряво, т.к. ты просто передаешь параметры и получаешь результаты в виде курсоров или готовых значений (или кодов ошибок). И если разработчик хранимок "наваял там такой логики, что без должного экранирования наконкатенировал там запросов, способных при должной инъекции поломать всё" то это проблема разработчика хранимок, а не бэк-ендера, который эту хранимку тупо вызвал.

раскрыть ветку (10)
Автор поста оценил этот комментарий

Ух... че-то я шевельнул...

Что живет вне системы контроля версий, а что внутри, вообще не должно влиять на архитектуру систему, это сугубо проблемы разрабов и и удобство их работы
На архитектуру влиять не должно - это да, но не хранить ВЕСЬ код в системе контроля версий того или иного проекта - это дилетантство.


Писать говно код потому что так удобнее, как раз таки и есть так себе идея
Причем тут говнокод? Говнокод можно написать и хранить где угодно. Речь не об этом. Есть еще и говноархитектура.


Код из хранимок вполне нормально хранится в системах контроля версий, потому что представляет собой обычный текст.
Отлично. Я рад, что вы это понимаете. А-то есть чудаки мудрые, которые держат и редактируют код хранимок исключительно и напрямую в БД, а не накатывают в рамках миграций на чистую базу.


Ничто лучше субд не справляется с работой с данными, поэтому всю логику работы с данными как раз таки должно хранить на уровне субд, если эта логика обещает быть сколько-нибудь сложной (а она почти всегда становится такой, когда у заказчика возникает больше хотелок).
СТОП, ЧТО!!!

В смысле хранить логику в БД?! БД - это база данных, там данные нужно хранить. Ещё там приходится хранить структуру (таблицы, связи, индексы), некоторые складывают в БД хранимые процедуры. Первоисточник их лежит в коде и код при деплое умеет их накатывать вместе со структурой с помощью миграций. Если у вас в БД лежит код хранимок, которого нет в системе контроля версий и в миграциях, то этот код временный для экспериментов или какой-то аварийной аналитики. Иначе вы рискуете разъехаться логикой с бэкендом. Разработчики-то сидят на разных ветках и версиях, а еще есть CI\CD, интеграционные тесты и прочее. Они могут работать со стейджинговыми БД, бэкапами и срезами.

Можно какую-то логику помещать в БД, но помещаться оно туда должно в рамках какого-то процесса деплоя и с отслеживанием версий.


хранить то что работает только в бд за пределами этой самой бд? Как тебе такая идея?
Отличная идея! Хранить код нужно в системе контроля версий. Размещаться в точке его выполнения код должен в рамках процесса деплоя.


я никогда не называю хранимки как API к базе, так как они являются таким же кодом проекта как и все остальное и оно не поставляется вместе с субд
Я тоже не называл ваши хранимки API. API - это интерфейс выполнения SQL-запросов к БД и получения результатов.
И если разработчик хранимок "наваял там такой логики, что без должного экранирования наконкатенировал там запросов, способных при должной инъекции поломать всё" то это проблема разработчика хранимок, а не бэк-ендера, который эту хранимку тупо вызвал.
Это исключительно проблема техлида, который не провел ревью и не надавал по шапке за такие уязвимости. Передавать паремтры в любые запросы к БД нужно либо через специальные механизмы передачи параметров в рамках API, либо очень тщательно очищая и валидируя их на бэке.



раскрыть ветку (9)
Автор поста оценил этот комментарий

Спасибо за комментарии, которые в основном правда представляют собой цепляние к словам.


Но что сказать то всем этим хотел? Что кроме говнокода есть говноархитектура? Ну если детализировать, то да.


Прицепился к слову "хранить", и все сообщение доказывал что хранить нужно в системе контроля версий. Как будто с этим кто то спорил. Рассказывал про правильный деплой, как он работает и прочее. Но как это все отвечает на вопрос "кто наговнокодил так, что возникла возможность sql-инъекций"? Ведь суть разговора, напомню, была именно в этом.


P.S. API к БД как "интерфейс выполнения sql-запросов" я добавлю в свою коллекцию перлов, с твоего позволения.

раскрыть ветку (8)
Автор поста оценил этот комментарий

Добавь лучше к перлам своё изречение, будто у БД не бвывает API и  мысль, будто бы хранимки - это API. Тут не цепляние уже

раскрыть ветку (7)
Автор поста оценил этот комментарий

Мысль, будто хранимки - это API пришла мне после прочтений твоих высказываний. Без твоего помощи мне бы это в голову не пришло. Мыслей наподобие той, что компилятор pl/sql который выполняет команду create or replace package - это оказывается API. И парсер sql-запроса, это тоже API. Почитай что ли вначале что такое API, а потом уже заявляй что взаимодействие с базой происходит через него. И вообще видимо если что то с чем взаимодейтсвует, то обязательно через API.

А потом еще можно будет обсудить перлы о том, stored procedure из БД должна храниться (stored) вовсе не в бд, а в vcs. И должны появляться в базе после деплоя, и вообще называться видимо deployed procedure.

раскрыть ветку (6)
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества