Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

2000 ;Кто вызвал процедуру? [MSSQL]


KAA ©   (2002-09-23 20:11:00) 

Есть несколько хранимых процедур, причем они могут быть вызваны либо пользователем, либо другой хранимой процедурой. Как узнать, кто вызвал процедуру, пользователь или другая процедура?
При условии чтоб пользователь вызывая хранимую процедуру, например, из квери аналайзера, не смог бы имитировать вызов из хранимой процедуры.


3JIA9I CyKA   (2002-09-24 10:40:00) [1]

Ку?
select object_name(@@procid)


KAA   (2002-09-24 10:31:00) [2]

APP_NAME() немного не то, мне нужно не имя приложения, а имя запущенной пользователем процедуры.


KAA   (2002-09-24 10:27:00) [3]

опечатка, не с другими правами, а с другими параметрами


3JIA9I CyKA   (2002-09-24 10:26:00) [4]

Ничего умнее APP_NAME() предложить не могу.


KAA   (2002-09-24 10:25:00) [5]

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


3JIA9I CyKA   (2002-09-24 10:18:00) [6]

А нафинг права на неё давать?


KAA   (2002-09-24 09:27:00) [7]

Скажем так, надо учесть такой вариант, что пользователь сможет запустить хранимую процедуру, т.е. максимально защититься от пользователя.
А если процедура будет принимать какой-нибудь параметр, тогда пользователь сможет сам его передать туда.
Нужно, наверно, прочитать какую-нибудь системную информацию, на которую пользователь уже не сможет повлить. Вот только какую?


Hro   (2002-09-23 23:23:00) [8]

Непонятно зачем это надо но исходя из сказанного ясно (?) что пользователь довольно грамотный (если умеет из квери аналайзера вызывать хранимые процедуры) однако у него нет доступа к ентерпайс менеджеру чтоб обойти любую проверку. В такой ситуации просто все процедуры принимают некий параметр характеризующий вызывающую сторону :), значения же параметров зашиты в самих процедурах. Может это не самое лучшее решение но работающее.


Наверх

Титульная страница Поиск, карта сайта Написать письмо