![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
Kostt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 169 Регистрация: 8.1.2006 Где: Томск Репутация: нет Всего: 3 |
Здравствуйте!
Существует база, состоящая из таблицы «Пользователи» (Поля: Имя в форме “Domain name\UserName” и Ф.И.О.), таблицы («Проекты») и таблиц данных, «завязанных» на таблицу «Проект» т.е. их записи образуют непересекающиеся множества, по одному на каждый проект. «Пользователи» связаны с «Проектами» таблицей «Доступ»: (ID проекта, ID пользователя, Уровень доступа( 0 – нет доступа, 1- чтение, 2-чтение и запись)). Задача – сделать так, чтобы пользователь мог работать только с теми записями, которые принадлежат проектам, для которых у него установлен доступ. Для чтения решение нашел: можно создать view, в которые выбирать данные по такому принципу:
Функция SYSTEM_USER возвращает имя пользователя сессии в форме DomainName\UserName Но эти view невозможно использовать для записи в таблицы . Предлагайте свои решения, плиз. |
|||
|
||||
boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 15 Всего: 35 |
Самое простое решение, для просмотра это view.
А для записи в таблице, рациональнее использовать Stored Procedure. -------------------- Никогда не говори никогда |
|||
|
||||
Kostt |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 169 Регистрация: 8.1.2006 Где: Томск Репутация: нет Всего: 3 |
Собственно, написал SP для проверки она действительно позволяет модифицировать таблицу даже если у пользователя нет прав на таблицу. Но ведь эту SP может вызвать кто угодно с любыми параметрами! Получается дыра в защите...
Пытался написать SP для модификации своего VIEW - например добавление - проблема с ID... ![]() |
|||
|
||||
boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 15 Всего: 35 |
Но ты ведь знаешь кто вызвал процедуру и какие действия он может выполнять.
При этом как ты заметил, у него нет прямого доступа к таблице поэтому нет дырки. -------------------- Никогда не говори никогда |
|||
|
||||
beroal |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 212 Регистрация: 18.1.2003 Где: Украина Репутация: нет Всего: 3 |
Если это MS SQL Server, то твой view должен быть updatable. Т.е. его можно update-ить.
|
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 5 Всего: 207 |
Не обязательно, View может быть и не редактируемым, например если имеет Union или аггрегативные функции (а иногда и Join), но это обходится при помощи "Instead of" триггеров -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
leniviy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 552 Регистрация: 8.2.2003 Где: Спб Репутация: нет Всего: 5 |
по-моему похожая тема уже была http://forum.vingrad.ru/index.php?showtopic=59138&hl=#
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "MS SQL" | |
|
Запрещается! Публиковать ссылки и обсуждать взлом чего бы то ни было.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, Akina. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MS SQL Server | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |