|
Доступ!
|
|||
---|---|---|---|
#18+
в своих CSP приложениях "заставляем работать" следующим образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2007, 08:25 |
|
Доступ!
|
|||
---|---|---|---|
#18+
Можно использовать совместно куки и сессии, тогда не надо постоянно поддерживать их жизнь. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2007, 09:08 |
|
Доступ!
|
|||
---|---|---|---|
#18+
aleshapМожно использовать совместно куки и сессии Примерчик с куками можете подогнать? С куками проблема... Пользователь их может отключить... :( ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2007, 10:03 |
|
Доступ!
|
|||
---|---|---|---|
#18+
krvsaНаши пользователи очень любят зайти в приложение и ничего в нем не делать... Таймаут кончается... Сессия помирает... :( Потом они загораются желанием поработать но уже поздно. :) Вот отсюда ноги и растут... ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT Дык про то и речь - почему приложение себя так ведет ? Оператору предположим делать нечего - а приложению ? Даже TCP-приложение "поддерживают коннект" - не так ли. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2007, 11:59 |
|
Доступ!
|
|||
---|---|---|---|
#18+
Хотел бы пару моментов написать, но не про сессии (поведение, которых, кстати, изменилось в Cache' 5.1. по сравнению с более ранними версиями), а про хранения пользователей, роли пользователей, их привелегии и т.д. Для хранения информации о пользователях рекомендую использовать стандартные возможности Cache' 5.1, 5.2, 2007.1, ... Нужно завести роли: пользователь, студент, преподаватель, декан, администратор. Далее можно создать набор ресурсов Вашего приложения в Портале Управления Системой. Это описано в документации Cache' . Назначить в портале права ролей пользователей на эти ресурсы. В Вашем приложении Вы можете в определенных местах (например, где формируется меню доступа к страницам) проверять есть ли права у пользователя: Код: plaintext
Если право есть, отрисовывать или давать возможность перехода на страницу по ссылке. Если нет - не пускать. То есть можно воспользоваться готовой системой безопасности Cache'. В ZEN все это сделано автоматически. Можно ставить в соответствие ресурс и компонент (например, пункт меню). Если есть возможность лучше делать Web-приложение на ZEN, но для этого нужно иметь Cache' 2007.1. Вадим ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2007, 15:38 |
|
Доступ!
|
|||
---|---|---|---|
#18+
Я так понимаю, что на каждую таблицу надо установить роли, и потом при обращении к этой таблицы проверять? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2007, 07:49 |
|
Доступ!
|
|||
---|---|---|---|
#18+
У нас темы дипломных проектов схожи! у меня тоже сайт про униветситет! ты не мог бы выслать мне свой,jakonda666@mail.ru? я могу своим поделиться.....не могу администрирование сделать никак((((( ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2007, 14:42 |
|
Доступ!
|
|||
---|---|---|---|
#18+
авторЯ так понимаю, что на каждую таблицу надо установить роли, и потом при обращении к этой таблицы проверять? Ну по крайней мере в каше 5.2 и ниже разрешения на таблицу не установите. Лучше разрешения ставить на интерфейс, и проверять - эта страница разрешена? А эта кнопка на странице разрешена? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2007, 15:13 |
|
Доступ!
|
|||
---|---|---|---|
#18+
krvsa aleshapМожно использовать совместно куки и сессии С куками проблема... Пользователь их может отключить... :( Отключить можно все... и куки и скрипты и flash... можно и браузер удалить и винду... Думаю это уже проблема пользователей, другое дело, то что их об этом необходимо оповещать. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2007, 16:31 |
|
Доступ!
|
|||
---|---|---|---|
#18+
Блок А.Н. авторЯ так понимаю, что на каждую таблицу надо установить роли, и потом при обращении к этой таблицы проверять? Ну по крайней мере в каше 5.2 и ниже разрешения на таблицу не установите. Лучше разрешения ставить на интерфейс, и проверять - эта страница разрешена? А эта кнопка на странице разрешена? Не совсем понимаю, почему? На уровне SQL в Cache' всегда было можно ограничить доступ к таблицам, видам и хранимым процедурам. В Cache' 2007.1. будет еще разграничение доступа к таблице на уровне записей. Другое дело, что если говорить про создания Web-приложения, то Вы правы, более правильно разграничить доступ на уровне приложения к фрагментам Web-приложения. С уважением, Вадим ... |
|||
:
Нравится:
Не нравится:
|
|||
14.05.2007, 23:56 |
|
Доступ!
|
|||
---|---|---|---|
#18+
VadimF Блок А.Н.Ну по крайней мере в каше 5.2 и ниже разрешения на таблицу не установите. На уровне SQL в Cache' всегда было можно ограничить доступ к таблицам, видам и хранимым процедурам. Ага, соврал :-(. Хотел сказать, что нельзя таблицам присвоить имя ресурса. Ведь для ресурса в каше 5можно проверить, доступен ли он $System.Security.Check А как это сделать для таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2007, 05:08 |
|
Доступ!
|
|||
---|---|---|---|
#18+
Выкладываю работу! Может поможет немного разобраться! Файл Diplom.xml импортировать локально в Cache 5 Папку "Images" скопировать на диск C:\ ... |
|||
:
Нравится:
Не нравится:
|
|||
15.05.2007, 09:42 |
|
Доступ!
|
|||
---|---|---|---|
#18+
Hi! VadimF То есть можно воспользоваться готовой системой безопасности Cache'. Для диплома, безусловно, можно. Но в боевой системе все не так просто. 1. Если что-то работало в предыдущей версии Cache, то оно может не заработать в следующей или будет работать по-другому. Cache весьма быстро развивается и меняется. Для будущих заказчиков это показатель крутизны, а для существующих - проблема. Поскольку разработчикам и тестерам нужно забивать в план работ довольно серъезные сроки на перенос системы на другую версию Cache. И это нередко останавливает от попыток использовать что-то готовое крайне быстро эволюционирующее. Выше крыши хватает мелкософта, который вынуждает всех конкурентов тратить время не на развитие прикладных систем, а на постоянный перенос их с одной версии винды на другую. 2. На одном сервере может крутиться несколько баз с весьма разной архитектурой безопасности. А пользователи и привилегии в Cache назначаются на сервер в целом, а не на конкретную базу с конкретным приложением. Одно дело, когда есть DBA, который отвечает за функционирование сервера в целом, создание бекапов и т.д., но ему нет дела до особенностей бизнес-логики конкретного приложения, а совсем другое, когда администратор безопасности именно конкретного приложения добавляет/удаляет пользователей, раздает доступ на ресурсы в соответствии с бизнес-логикой приложения, но ему нет дела до технических проблем, бекапов, производительности, наличия места на дисках, знания, что в каких таблицах находится и т.д. И если разные приложения разработаны разными независимыми компаниями, то в целях избежания головной боли от совместимости лучше будет ставить их на разные физические сервера со своей Cache. Но тут уже совсем другая лицензия нужна. 3. Вопрос, тесно связанный с предыдущим пунктом, это невозможность бэкапа информации по пользователям, их правам доступа к данным вместе с самими данными конкретной базы. И соответственно, востановления из бэкапа так, чтобы это не повляло на пользователей, других приложений, которые крутятся на этом сервере. Или, к примеру, стандартная процедура апгрейда приложения. Делается бекап боевой базы с первого сервера, восстанавливается на физически отдельном втором тестовом сервере (где может стоять другая версия Cache), либо если боевой сервер можно остановить, то в него втыкается винчестер, туда копируется CACHE.DAT и этот винчестер переносится на второй сервер. Понятно, что копировать базу по сети бессмысленно. На тестовом сервере ставится новая версия приложения, проверяется и отрабатывается процедура перехода. Затем она воспроизводится на боевом сервере (либо просто юзеров переключают с первого сервера на второй). Вопрос: как перенести информацию о 500 пользователях, привилегиях и правах доступа с первого сервера на второй? Попытка просто скопировать базы CACHESYS и CACHEAUDIT привела к неработоспособности второго сервера из-за того, что он оказался в другом Windows домене. Т.е. завязка на аутентификацю операционной системы или Kerberos - рискованная штука. Бэкап базы трехлетней давности может запросто не подняться, если одновременно с ним не поднять бэкап на контроллере домена. 4. Если разграничение доступа является существенной частью бизнес-логики приложения, то вероятнее всего будут и особые требования к функционалу системы безопасности. Казалось бы, вполне примитивное требование, что рядовой пользователь, не являясь админом, должен иметь возможность поменять пароль сам себе. В то-же время, админ не должен знать пароли пользователей и сам их менять. Разве что задавать начальный пароль пользователю при регистрации в системе нового пользователя, но должен поставить галочку "Требовать от пользователя смены своего пароля при первом входе в систему". Тем не менее, мне не удалось найти такой простой возможности "в готовой" системе безопасности Cache. То есть, если заказчик такую функцию потребует, то останется только сказать: "Обращайтесь к Интерсистемсу, и тогда, возможно, когда-нибудь..." А кроме такой мелочи, могут быть и более интересные вещи. У нас, к примеру иерархическая система групп (ролей). В состав группы могут входить другие группы и пользователи, в то-же время пользователь и группа может входить в состав нескольких групп. Кроме разрешений бывают еще и запреты. Если у группы "А" есть разрешение на ресурс "1" и ресурс "2", а у группы "Б" есть запрет на ресурс "2" (про ресурс "1" ничего не сказано), то пользователи, входящие только в группу "А" получат разрешение на оба ресурса, входящие только в группу "Б" - ни на один ресурс, входящие и в группу "А" и в группу "Б" - разрешение только на ресурс "1". Когда в системе под 500 пользователей, гибкость и удобство системы разграничения доступа, а также пользовательский интерфейс имеют значение. Попробуйте реализовать Drag & Drop пользователей из группы в группу на WEB - интерфейсе встроенной в Cache системы безопасности. Вообще, перевод администрирования Cache на CSP - не самое удобное IMHO с точки зрения возможностей пользовательского интерфейса решение. Интерфейс можно улучшить, если сделать навороченный апплет на яве, но тогда чем он будет отличаться от старого доброго "толстого" клиента? Разве что кроссплатформенностью. С каждым пользователем и группой может быть ассоциирована масса информации и индивидуальных настроек внешнего вида приложения, а не только логин или пароль. Например, рабочий телефон, e-mail, фотография и т.д. Часть этой информации может поменять только администратор, часть - сам пользователь. Да и создание/удаление/перемещение из группы в группу пользователя может потребовать выполнения определенных операций. К примеру, удаление пользователя, это не DELETE FROM. Просто помечается, что пользователь больше не может входить в систему, часть информации удаляется (например личные почтовые ящики вместе с сообщениями), но основная идентифицирующая часть остается. Дело в том, что ведется журнал, и может возникнуть вопрос, "кто менял этот документ три года назад" и тогда нужно получить информацию по пользователю, даже если он пару лет назад уволился и с тех пор доступа в систему не имеет. Возможности перехватить операцию встроенной системы безопасности Cache по созданию/удалению/и т.д. пользователей и выполнить какие-то собственные действия не имеется. Раньше (в Cache 5.0) было можно перехватить логин к ODBC, выполнить собственные проверки и даже заменить имя пользователя. В частности, это давало возможность при подключении пользователя задавать логин и пароль не тот, что указан в SQL-менеджере, а тот, что указан в моем приложении. После проверки пароля, моя функция заменяет имя на _SYSTEM (или любое другое) и с точки зрения Cache пользователь выглядит, как _SYSTEM и для него используются гранты, заданные для _SYSTEM, а с точки зрения моего приложения он выглядит как мой пользователь. То есть, можно было задействовать как встроенную систему безопасности SQL так и мою логику, сочетая их возможности. Сейчас (Cache 5.2) возможность переопределения функции логина пропала. См. пункт 1. ____________________________ С уважением, Лисеев Дмитрий. http://private.peterlink.ru/dimik/ PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73 Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2007, 04:56 |
|
Доступ!
|
|||
---|---|---|---|
#18+
Hi! VadimF В Cache' 2007.1. будет еще разграничение доступа к таблице на уровне записей. Угу. И сильно подозреваю, что по своим возможностям не дотянет до того, что я сделал еще 6 лет назад. Учитывая, что логика разграничения доступа сильно зависит от специфики приложения, а реализовать ее на триггерах - раз плюнуть. Допустим, есть у нас дерево папок. То есть в таблице имеется поле Parent с внешним ключем родительской папки. Перенос папки из одной родительской в другую с точки зрения сервера это UPDATE на запись переносимой папки с изменением Parent. А вот с точки зрения юзера переносимая папка не меняется, зато производится удаление из старой родительской и вставка в новую родительскую. Юзер не оперирует терминами SQL - операций. Ему надо не только право на изменение атрибутов и удаление папки, но и отдельно право на создание/удаление в ней дочерних подпапок. ____________________________ С уважением, Лисеев Дмитрий. http://private.peterlink.ru/dimik/ PGP key fingerprint: 09 28 74 28 6C 39 62 29 2E CB 95 03 4F 04 33 73 Posted via ActualForum NNTP Server 1.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
20.05.2007, 04:56 |
|
Доступ!
|
|||
---|---|---|---|
#18+
krvsaА я что-то не очень доверяю сессиям... :( Т.к. они "исчезают" через некоторый таймаут... некий тайм аут можно изменить, я у себя поставил 28000 секунд и красота наступила. а сессию закрывать при наступлении события onunload на страничке. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.05.2007, 22:34 |
|
Доступ!
|
|||
---|---|---|---|
#18+
Дмитрий, не могу сейчас, к сожалению, подробно ответить на Ваше сообщение. Отмечу только один момент: Dmitry V. Liseev 3. Вопрос, тесно связанный с предыдущим пунктом, это невозможность бэкапа информации по пользователям, их правам доступа к данным вместе с самими данными конкретной базы. И соответственно, востановления из бэкапа так, чтобы это не повляло на пользователей, других приложений, которые крутятся на этом сервере. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
С уважением, Вадим ... |
|||
:
Нравится:
Не нравится:
|
|||
25.05.2007, 00:21 |
|
Доступ!
|
|||
---|---|---|---|
#18+
Блок А.Н. для ресурса в каше 5можно проверить, доступен ли он $System.Security.Check А как это сделать для таблицы?Спустя 11 лет задаю тот же вопрос: можно ли проверить разрешения пользователя для таблицы? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 12:57 |
|
Доступ!
|
|||
---|---|---|---|
#18+
Блок А.Н.Блок А.Н. для ресурса в каше 5можно проверить, доступен ли он $System.Security.Check А как это сделать для таблицы?Спустя 11 лет задаю тот же вопрос: можно ли проверить разрешения пользователя для таблицы?Можешь уточнить, какие разрешения для таблицы? В какой момент, и для кого нужно проверять разрешения? ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 13:00 |
|
Доступ!
|
|||
---|---|---|---|
#18+
DAiMor, например, разрешения на вставку или удаление строк в некоторую таблицу. Я понимаю, что там все может быть гораздо тоньше, но мне достаточно этого. ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 13:39 |
|
Доступ!
|
|||
---|---|---|---|
#18+
$system.SQL.CheckPriv() Код: sql 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 15:46 |
|
Доступ!
|
|||
---|---|---|---|
#18+
DAiMor, На этот раз, хотя я делаю это не на Каше 5, а аж на 2010.2, в которой эти возможности уже должны быть, удача оказалась не на моей стороне. Сервер собран с какой-то странной версией класса %SYSTEM.SQL, в которой этих методов нет. Попробовал всех перехитрить и посмотреть, как компилируется EmbeddedSQL, но оказалось, что ESQL не использует безопасность. Но буду иметь в виду, спасибо :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
21.02.2018, 21:19 |
|
|
start [/forum/topic.php?fid=39&msg=34517972&tid=1556273]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
38ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 150ms |
0 / 0 |