Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
В приложении есть генератор отчётов(Report Builder для Delphi), в нём пользователи могут менять SQL.
то, что там пропускаются штуки типа "drop table" - это полбеды. В конце концов можно не давать пользователю прав на такое. Но нельзя не давать прав на update. А с ним можно наделать делов не меньше:
Update price set old_price = 0


Как бы запретить пользователю в определённых режимах делать что-то кроме SELECT, в рамках его привилегий?

Есть конечно вариант прикрутить какой-нибудь "проверяльщик SQL строки на безопасность". Если таковые есть - тоже вариант. Подскажите. Понятно, что DROP, CREATE, UPDATE и DELETE я сам могу выпилить, а какие ещё засады могут встретиться?
5 июн 19, 22:29    [21902985]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1604
Запретить менять SQL? Зачем им что-то знать про SQL?

В лоб вариант...
Репорт билдер же по идее только на select работает?
Учеткам пользователей только коннект и селект.
Все остальные запросы пустить через роль приложения, если это mssql или от других учеток...
5 июн 19, 22:41    [21902989]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
ёёёёё
Member

Откуда:
Сообщений: 1371
Victor Cookin,

можно селектом сервер подвесить. И даже уронить.
...
Не надо виды запросов ограничивать, совсем. Вопрос - организационный.
Тридварасов не допускай к такому фукционалу, вот и все.
5 июн 19, 22:53    [21902994]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
X-Cite,
Репорт билдер никак не ограничивает SQL statement, можно хоть DROP засунуть (но он сработает, естественно, только с учётки админа). Отчётов - сотни, пользователи должны их менять (иначе айтишникам кранты)
5 июн 19, 22:56    [21902996]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
ёёёёё,

Ну да, и кривым селектом. Но это не страшно (убить процесс не проблема) - страшна потеря данных. Тридварасов нет, но люди ошибаются.
5 июн 19, 22:58    [21902998]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
ёёёёё
Member

Откуда:
Сообщений: 1371
Victor Cookin,

юзеры не будут отчёты менять, тем более - с применением sql.
Это полный анрил, 500%.
Будет либо специально нанятый мальчик (сколько нужно платить, чтобы разумное существо согласилось выполнять такую работу?).

Либо вы, разработчики. Поэтому не надо осложнять себе жизнь.
5 июн 19, 23:04    [21903002]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
ёёёёё
Victor Cookin,

юзеры не будут отчёты менять, тем более - с применением sql.


А кто сотни отчётов в таком случае наструячил?
5 июн 19, 23:14    [21903009]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
ёёёёё
Member

Откуда:
Сообщений: 1371
Victor Cookin
ёёёёё
Victor Cookin,

юзеры не будут отчёты менять, тем более - с применением sql.


А кто сотни отчётов в таком случае наструячил?

Неужели ваши юзеры, с помощью эскуэл?
5 июн 19, 23:15    [21903010]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
ёёёёё,

Ну не программёры же будут этой фигнёй заниматься. Был дан образец и - понеслось. Пока, тьфу-тьфу, никаких засад не было. Но кто ж знает что может быть.
5 июн 19, 23:27    [21903018]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
DimaBr
Member

Откуда:
Сообщений: 11330
А кто сотни отчётов в таком случае наструячил?

[youtube=]
6 июн 19, 01:00    [21903047]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
DimaBr,

активных отчётов 553, всего за 10+ лет - 12548. Все в базе хранятся.
6 июн 19, 01:07    [21903049]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Gator
Member

Откуда: Москва
Сообщений: 14978
Victor Cookin,

За 10 лет вполне можно было устаканить права на объекты и расписать роли
6 июн 19, 05:09    [21903061]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
fraks
Member

Откуда: Новосибирск
Сообщений: 1469
IMHO там бОльшая часть отчетов повторяет друг друга, может быть отличаясь в мелких ньюансах.
Ибо при таком количестве отчетов вместо того что бы разбираться нет ли уже такого существующего, юзерю проще сделать новый, на основе какого-нибудь другого. И таким образом хаос нарастает.
6 июн 19, 06:42    [21903074]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
ёёёёё
Member

Откуда:
Сообщений: 1371
Victor Cookin
DimaBr,

активных отчётов 553, всего за 10+ лет - 12548. Все в базе хранятся.

- Что-то у нас техподдержка бездельничает, пользователи перестали обращаться?
- Просто мы на прошлой неделе метаданные в базе поменяли, вот пользователи и не звонят, отчеты правят...
6 июн 19, 09:36    [21903166]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
asutp2
Member

Откуда: Тюмень
Сообщений: 550
Victor Cookin
ёёёёё,

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

а потом ты жалуешься, что юзеры могут использовать update или delete :-)
и кстати, довольное странное отношение к отчетам, ты называешь их "фигней", хотя потом сам же говоришь, что:
Victor Cookin
активных отчётов 553, всего за 10+ лет - 12548. Все в базе хранятся.

на мой взгляд со стороны это уже вполне себе серьезный момент, требующий правильной организации
6 июн 19, 09:46    [21903183]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Gator
За 10 лет вполне можно было устаканить права на объекты и расписать роли

(sorry for offtop)
интересно как в Оракле, например, можно дать пользователю возможность работать на изменение только с одной записью? Триггеры не предлагать.
6 июн 19, 17:43    [21903846]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11263
Victor Cookin
интересно как в Оракле, например, можно дать пользователю возможность работать на изменение только с одной записью?
Так же как и везде - через View. Можно даже с одним полем
6 июн 19, 17:47    [21903855]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
asutp2
а потом ты жалуешься, что юзеры могут использовать update или delete :-)

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

asutp2
и кстати, довольное странное отношение к отчетам, ты называешь их "фигней"

это парафраз
ёёёёё
(сколько нужно платить, чтобы разумное существо согласилось выполнять такую работу?).


asutp2
на мой взгляд со стороны это уже вполне себе серьезный момент, требующий правильной организации

Все по псевдопапочкам разложено)
6 июн 19, 17:47    [21903856]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
_Vasilisk_
Так же как и везде - через View. Можно даже с одним полем

не понимаю как
6 июн 19, 17:50    [21903864]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
fraks
IMHO там бОльшая часть отчетов повторяет друг друга, может быть отличаясь в мелких ньюансах.
Ибо при таком количестве отчетов вместо того что бы разбираться нет ли уже такого существующего, юзерю проще сделать новый, на основе какого-нибудь другого. И таким образом хаос нарастает.


Да нет никакого хаоса. Ну да, меняют. Год поменялся, НДС поменялся...
6 июн 19, 17:51    [21903866]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 59368
Блог
Victor Cookin
интересно как в Оракле, например, можно дать пользователю возможность работать на изменение только с одной записью?

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

Victor Cookin
Триггеры не предлагать.

А что ещё не предлагать? Опубликуйте, пожалуйста, весь список. SELECT, INSERT, UPDATE и DELETE туда войдут?
6 июн 19, 18:10    [21903905]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
softwarer
Например, можно открыть культовую книгу Тома Кайта, которую всегда рекомендуют прочитать любому новичку. Там этому вопросу посвящена одна из глав.


У Кайта много книг. В основном как раз для профессионалов. Какую конкретно книгу Вы рекомендуете.

softwarer
А что ещё не предлагать? Опубликуйте, пожалуйста, весь список. SELECT, INSERT, UPDATE и DELETE туда войдут?


Нет, только триггеры не предлагать.
6 июн 19, 18:15    [21903908]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 59368
Блог
Victor Cookin
Как бы запретить пользователю в определённых режимах делать что-то кроме SELECT, в рамках его привилегий?

Например, через роли.

Victor Cookin
Есть конечно вариант прикрутить какой-нибудь "проверяльщик SQL строки на безопасность".

Есть и более идиотские варианты.
6 июн 19, 18:17    [21903912]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Шавлюк Евгений
Member

Откуда: Одесса
Сообщений: 486
Victor Cookin,

В firebird может быть r/o транзакция. Один из вариантов решения проблемы
6 июн 19, 18:32    [21903928]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30600

06.06.2019 18:32, Шавлюк Евгений пишет:
> В firebird может быть r/o транзакция.

у Оракела тоже.

Posted via ActualForum NNTP Server 1.5

6 июн 19, 18:36    [21903934]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Мимопроходящий

у Оракела тоже.


Пользователь должен иметь возможность сохранять сам код отчёта, а он в базе. То есть что, перед сохранением транзакцию откатываем, а после - опять создаём? Можно в принципе. Но я не уверен, что RB будет пользоваться именно этой транзакцией, а не создаст свои.
6 июн 19, 18:49    [21903946]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
softwarer
Например, через роли


Да, это наиболее адекватный вариант.
6 июн 19, 18:52    [21903948]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Да, это наиболее адекватный вариант.


PS Это, правда, вариант RO, а не ограничения изменений одной записью, но это даже и лучше
6 июн 19, 18:57    [21903952]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
ёёёёё
Member

Откуда:
Сообщений: 1371
Victor Cookin
Мимопроходящий
у Оракела тоже.


Пользователь должен иметь возможность сохранять сам код отчёта, а он в базе. То есть что, перед сохранением транзакцию откатываем, а после - опять создаём? Можно в принципе. Но я не уверен, что RB будет пользоваться именно этой транзакцией, а не создаст свои.

Процедуры можно использовать, которые наделены соответствующими правами, не?
6 июн 19, 20:48    [21904015]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
DimaBr
Member

Откуда:
Сообщений: 11330
активных отчётов 553, всего за 10+ лет - 12548. Все в базе хранятся.

12548 отчётов ?
Может 12548 копий одного и того же отчёта ?
Вы проверьте, каждый второй одинаковые
6 июн 19, 21:52    [21904042]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
DimaBr
Вы проверьте, каждый второй одинаковые


Ну и что? Ну будут ~250 различных
6 июн 19, 22:03    [21904048]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
ёёёёё
Процедуры можно использовать, которые наделены соответствующими правами, не?


ага... А поле переназвали, и процедура стала инвалидом. К тому ж не уверен что RB адекватно будет работать с таким источником данных, как процедура... Как там сделать rbDataPipe из процедуры ?

Всё проще - надо сделать специальный коннекшн для специального юзера - ReportBuilderUser. Этому юзеру ограничить права только на чтение. И переходить на него при работе с ReportBuilder.
6 июн 19, 22:11    [21904051]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
ёёёёё
Member

Откуда:
Сообщений: 1371
Victor Cookin
ёёёёё
Процедуры можно использовать, которые наделены соответствующими правами, не?


ага... А ... К тому ж не уверен что ... Как там сделать ...?

Всё проще - надо сделать специальный...


Ну ты попробуй хотя бы. Как минимум - узнаешь, как процедуры в качестве источника данных применять. :)

А что такое RB? ReportBuilder? https://www.codeproject.com/Articles/857489/Creating-Report-using-Report-Builder-and-Oracle-DB
...
Можно процедуру использовать именно для сохранения отчета в базе. Юзеру запись запретить совсем, а сторед процедуре - разрешить. И юзера до этой SP допустить.
6 июн 19, 22:43    [21904077]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11263
Victor Cookin
_Vasilisk_
Так же как и везде - через View. Можно даже с одним полем
не понимаю как
Отобрать права на доступ к таблице и выдать права на доступ к вьюхе
7 июн 19, 16:26    [21904707]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
_Vasilisk_
Отобрать права на доступ к таблице и выдать права на доступ к вьюхе

Основное приложение работать перестанет - там запросы именно к таблицам.
7 июн 19, 17:28    [21904773]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
ёёёёё
Ну ты попробуй хотя бы. Как минимум - узнаешь, как процедуры в качестве источника данных применять. :)

Прочитал. Понял, как в РБ можно процедуры ... Только зачем?
Выберет пользователь вместо процедуры таблицу - и понеслось UPDATE ...WHERE 1=1

ёёёёё
Можно процедуру использовать именно для сохранения отчета в базе. Юзеру запись запретить совсем, а сторед процедуре - разрешить. И юзера до этой SP допустить.

Да с сохранением отчёта вообще проблем нет. Пусть сохраняют как хотят.
7 июн 19, 17:33    [21904778]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30600

07.06.2019 17:28, Victor Cookin пишет:

> Основное приложение работать перестанет - там запросы именно к таблицам.

таблицу переименуй.
оберни её во вьюху с исходным именем таблицы.

Posted via ActualForum NNTP Server 1.5

7 июн 19, 18:11    [21904826]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Мимопроходящий
таблицу переименуй.
оберни её во вьюху с исходным именем таблицы.


А что случится если в приложении случится
INSERT INTO ORDERS (Order_ID, ... VALUES (23512234,...
7 июн 19, 18:15    [21904830]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30600

07.06.2019 18:15, Victor Cookin пишет:
> А что случится если в приложении случится
> INSERT INTO ORDERS (Order_ID, ... VALUES (23512234,...

случится инсёрт во вьюху

Posted via ActualForum NNTP Server 1.5

7 июн 19, 18:18    [21904837]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Мимопроходящий
случится инсёрт во вьюху


А что случится если в случится
INSERT INTO ORDERS SELECT 434 000 000 records?
7 июн 19, 18:27    [21904850]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30600

07.06.2019 18:27, Victor Cookin пишет:
> А что случится если в случится
> INSERT INTO ORDERS SELECT 434 000 000 records?

случится отлуп, если ты правильно сделаешь RLS.

ps: не нужно растекаться мыслями по всем форумам сразу.

Posted via ActualForum NNTP Server 1.5

7 июн 19, 18:34    [21904859]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Мимопроходящий
случится отлуп, если ты правильно сделаешь RLS.

А зачем View делать? Я точно так же могу RLS на таблице настроить, нет?

Мимопроходящий
ps: не нужно растекаться мыслями по всем форумам сразу.


Вопрос - на стыке. Можно ведь просто сделать анализ SQL строки средствами Дельфи перед тем как она будет отдана из RB в базу Oracle.
7 июн 19, 18:45    [21904873]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Мимопроходящий
Member

Откуда: бурятский тундрюк, эсквайр
Сообщений: 30600

07.06.2019 18:45, Victor Cookin пишет:
> Можно ведь просто сделать анализ SQL строки средствами Дельфи

сделай.

Posted via ActualForum NNTP Server 1.5

7 июн 19, 18:58    [21904890]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
Мимопроходящий
сделай.


Во-первых, это некрасиво...
7 июн 19, 19:21    [21904898]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
энди
Member

Откуда: Киров, Россия
Сообщений: 1018
что за дичь, у вас там пользователи что под правами админа работают чтоли?
доступ к объектам и строкам спокойно делается встроенными средствами практически любого вменяемого sql сервера.
Причем как Вам уже сказали выше, роли, разграничение доступа, хранимки, вьюшки, кое где и права на отдельные строки таблицы можно. Что вы опять сову на глобус натягиваете, хотите правильно, Вам сказали как, хотите неправильно, дело Ваше, но причем тут мы? :)
7 июн 19, 19:25    [21904899]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Victor Cookin
Member

Откуда: Самара
Сообщений: 714
энди
что за дичь, у вас там пользователи что под правами админа работают чтоли?

Под собой они работают. Слава богу, не владельцы схемы. А когда я захожу, могу спокойно даже DROP TABLE сделать из Report Builder.

энди
доступ к объектам и строкам спокойно делается встроенными средствами практически любого вменяемого sql сервера.

Тут вообще-то скорее по Дельфям форум, а не по Ораклу. По Ораклу я спросил в том форуме

энди
Причем как Вам уже сказали выше, роли, разграничение доступа, хранимки, вьюшки, кое где и права на отдельные строки таблицы можно.

Роли достаточно. Хранимки, вьюшки - не дают абсолютно ничего. RLS - - возможно

энди
Что вы опять сову на глобус натягиваете

Интересно иметь on the table все возможности
7 июн 19, 19:49    [21904910]     Ответить | Цитировать Сообщить модератору
 Re: проверяльщик SQL строки на безопасность  [new]
Василий 2
Member

Откуда:
Сообщений: 801
Самый вменяемый совет, имхо, это завести RO роль ReportBuilder и выполнять все юзерские SQL-и из-под нее. Ну и придется мириться с возможностью повешения сервера косым/злобным запросом (или отрубать длинные запросы средствами сервера)
13 июн 19, 16:54    [21908088]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / Delphi Ответить