09.11.2007, 15:35
|
#1
|
Участник
Регистрация: 28.11.2005
Адрес: Москва
|
Не пускайте программистов в рабочее приложение! Или почему еще надо переходить на DAX4
В конце февраля сего года появилась заметка о том, как можно, перебив SID в табличке UserInfo, войти в "чужую" базу DAX4 - в том числе на другом компьютере и без Active Directory. Тогда эта заметка стала поводом к обсуждению вопросов разграничения доступа к БД Аксапты, и были высказаны различные предложения от использования отдельных логинов для AOS и для всех остальных до выделения SQL-сервера в обособленную защищенную подсеть. Однако, разработчики ядра Аксапты вынуждают использовать нетрадиционные подходы в вопросе разграничения доступа к базе Axapta 3.0...
Недавно при просмотре методов системных классов (еще раз спасибо автору Axapta Doc Generator) я натолкнулся на "интересную" особенность класса SQLSystem: один из его методов возвращает объект LoginProperty, с помощью которого можно как в 2-х, так и в 3-хуровневой конфигурации узнать полную информацию о подключении к используемой БД, включая NetBIOS-имя сервера, название базы, а также логин и пароль. Таким образом, любой, у кого есть доступ на разработку в какое-либо приложение, может (скажем, в 3-хуровневой конфигурации) узнать параметры подключения AOS'а к базе данных при использовании этого приложения. Сделать это можно следующим образом:X++: static void JobDbInfo(Args _args)
{
LoginProperty loginProp;
;
loginProp = new SQLSystem().createLoginProperty();
info(strfmt("server = '%1', db = '%2', user = '%3', pwd = '%4'",
loginProp.getServer(),
loginProp.getDatabase(),
loginProp.getUsername(),
loginProp.getPassword()));
} Теперь несколько замечаний:- этот "финт ушами" работает только в AX3 (проверялось на SP3, KR2, KR3), в DAX4 вывод логина и пароля был отрублен (проверялось на SP1, SP2) - лишний аргумент за переход на 4-ку;
- данная тема, как выяснилось после некоторых изысканий, уже поднималась на форуме еще в 2004-м году! правда, тогда она осталась без должного внимания;
- на буржуйских форумах обсуждения этой "возможности" найти не удалось, равно как и в документации по DAX4 - упоминаний о закрытии этой бреши;
Единственным более-менее надежным способом сохранить в тайне логин/пароль, используемый AOS'м для подключения к базе Axapta 3.0, в этой связи видится следующий: четко разделить функции администратора системы Axapta и разработчика и оставить доступ к (рабочему) приложению только администратору.
Последний раз редактировалось gl00mie; 09.11.2007 в 15:38.
|
|
За это сообщение автора поблагодарили: mazzy (25), zemlyn (2), Logger (6), alex55 (1). |