Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS SQL server

Вопросы связанные с MS SQL server

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Что лучше - значение таблицы или переменная?
 
 автор: Аленка   (08.11.2008 в 11:44)   личное сообщение
 
 

Сначала я права раздавала через переменные. То есть присваивала необходимым элементам определенную переменную и в зависимости от значения переменной пользователь получал права на этот элемент или не получал.
Потом я переменную заменила значением таблицы, так как в одном из моих вопросов, касающемся разграничения полномочий мне посоветовали так сделать и сказали, что это надежнее. Хотя не все с этим были согласны.
Как бы то ни было, работает и тот способ и другой. Вопрос вот в чем.
Если говорить про MDB, то, конечно, значения таблицы - это надежднее. Так как что бы там ни говорили про то, что переменная никуда деваться не должна и программист все должен предусмотреть, но все же, ИНОГДА значения переменных обнуляются и получают первоначальное значение (ошибки операционной системы, ошибки в исполнении кода и т.п. - я в этом убедилась). А значения таблиц в MDB никуда не деваются.

Но вот с ADP ситуация совершенно иная. Здесь при потере соединения таблица становится недоступной и соответственно, значение таблицы, касающиеся прав.

У меня такой вопрос. Какой способ разрдачи прав лучше реализовать в ADP? И если сделать через значения таблицы, то при потере соединения станут ли пользователю доступны те элементы, которые ему должны быть недоступны?

  Ответить  
 
 автор: час   (08.11.2008 в 15:19)   личное сообщение
 
 

Говорят лучше в таблице хранить
такакакак там надёжнее.
А доставать быстрее из переменной........
Так как же ответить на твой (ВАШ) вопрос.
Храните в таблице и присваивайте значение переменной при первом удобном случае, а потом пусть отваливаются до новой авторизации.........

  Ответить  
 
 автор: Аленка   (09.11.2008 в 08:43)   личное сообщение
 
 

В общем-то, я так и думала, что будет такой ответ. Что я и сделаю, так как других вариантов тоже не увидела.
Спасибо!!!!!!!!!!!!!

  Ответить  
 
 автор: Lukas   (09.11.2008 в 13:28)   личное сообщение
 
 

http://www.hiprog.com/forum/read.php?id_forum=1&id_theme=4071&page=3

Читайте последний топик автора Кабан.

  Ответить  
 
 автор: Аленка   (10.11.2008 в 17:36)   личное сообщение
 
 

Спасибо

  Ответить  
 
 автор: Lvm   (12.11.2008 в 14:15)   личное сообщение
 
 

>Сначала я права раздавала через переменные.

Это называется "штаны через голову надевать".

>Какой способ разрдачи прав лучше реализовать в ADP?

Единственно правильный. Создать на SQL-сервере юзеров и назначить им доступ к базам, таблицам и запросам.

Как я думаю, налицо непонимание Вами самой идеологии "клиент-сервер".

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

В архитектуре "клиент-сервер" всю безопасность обеспечивает сервер. Клиент априори считается способным на совершение любых несанкционированных действий. Он может попытаться подключиться к любой базе, считать или записать данные в таблице, выполнить запрос. Задача сервера - разрешить, либо запретить ему эти действия.

Если Вы переходите с mdb на SQL Вам придется в сильно изменить свое понимание организации защиты БД.
Забудьте все извращения с формами, права в таблицах, и что там ещё изобретала Ваша пытливая мысль. В SQL-е это все организуется совершенно по другому - ПРАВИЛЬНО и ПО ВЗРОСЛОМУ.
Файл adp вообще не нужно защищать. НИКАК. В нём только формы и отчёты. Если пытливый юзер его испортил, пусть достает резервную копию из архива и работает дальше как ни в чём не бывало. Вся защита должна быть реализована на сервере.
Как?

Ну во первых, в MS SQL доступ можно определить куда гибче, чем в mdb. К таблицам, например, раздельно назначаются права на чтение, изменение, вставку и удаление записей. Но одними только запретами задачи безопасности решить не удаётся. Как правило, безопасность упирается в дилемму, что нужно разрешить юзеру изменять данные, но при этом обеспечить их корректность. Для этого в MS SQL есть одна ВЕСЧЬ, называемая "хранимые процедуры". Это разновидность запросов SQL-я. В хранимых процедурах не просто исполняются SQL-запросы. Здесь запросы можно помещать в процедурные конструкции, называемые "транзакт-SQL". Т.е. хранимая процедура может проверить переданные ей данные на соответствие каким-то условиям и выполнить, либо нет SQL-запрос.
Таким образом не надо разрешать юзеру запись в таблицу, и потом волноваться насчет того, что он залезет туда в обход формы и все испортит. Запись в таблицу надо запретить. А разрешить ему запуск хранимой процедуры, которая производит эту запись. Пусть юзер ломает форму, или пишет своё приложение - неважно. Сделать он сможет только то, что ему разрешит сервер.
И т. д. и т. п. На MS SQL ещё всякие штучки имеются. Триггеры, например.
Ну, тут Вам и умные книжки в руки...

  Ответить  
 
 автор: Pasat   (12.11.2008 в 22:17)   личное сообщение
 
 

спасибо за статью
Другой раз из целой книжки столько не узнаешь, сколько можно понять из грамотно написанной статьи

  Ответить  
 
 автор: Аленка   (13.11.2008 в 17:08)   личное сообщение
 
 

>>Какой способ разрдачи прав лучше реализовать в ADP?
>
>Единственно правильный. Создать на SQL-сервере юзеров и
>назначить им доступ к базам, таблицам и запросам.
>

Вот здесь Вы меня не поняли. Права на сервере - это понятно. Без них все равно никуда не денешься. Никто и не получит доступа к БД, если ему не дать прав.
Я имею ввиду права на пользование элементами в проекте ADP.
То, что мой проект изначально неправильно сделан под SQL - это я Вас уже поняла. Но пока я не изменила свой проект, не изучила и не создала эти хранимые процедуры, триггеры и другие крутые финтиклюшки (на что у меня уйдет пару-тройку месяцев, так как это не основной род деятельности для меня, а просто мой интерес), то мне придется пользовать своей системой разграничения прав на элементы в проекте ADP.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList