Используемый для разработки Arta Synergy язык и платформа
программирования Java
разрабатывалась с учётом
требований к безопасности. Вот несколько примеров этого:
В Java используется автоматическое управление памятью, исключающее появление «висячих» указателей и выход за границы массива, что нейтрализует атаки вида «переполнение буфера»
Контроль при получении и загрузке программ носит в Java многоступенчатый характер: программные компоненты могут снабжаться электронной подписью, что позволяет контролировать их целостность и аутентичность, а верификатор байткодов, кроме общей проверки формата поступившей информации, пытается убедиться в отсутствии следующих некорректных действий:
подделка указателей (например, получение указателя как результат выполнения арифметической операции);
нарушение прав доступа к компонентам классов (например, присваивание переменной, снабженной описателем final);
использование объектов в каком-либо другом качестве (например, применение к объекту метода другого класса);
вызов методов объектов с недопустимым набором параметров;
недопустимое преобразование типов;
вызов операции Java-машины с недопустимым набором параметров;
некорректная операция с регистрами Java-машины (например, запись регистра с неопределенным содержимым);
переполнение или исчерпание стека. Выполняются также некоторые другие, более тонкие проверки, связанные, в частности, с корректностью обработки исключительных ситуаций.
Выполнение Java-кода внутри виртуальной машины Java (JVM) обеспечивает защиту Java-окружения времени выполнения и ресурсов аппаратно-программной платформы от вредоносного программного обеспечения и разграничивает доступ субъектов к ресурсам прикладного уровня.
Несомненно, никакая другая технология программирования на сегодняшний день не обеспечивает аналогичной степени информационной безопасности[1]
Платформа Arta Synergy реализована с использованием подхода к
проектированию ИС, называемого «трехслойная архитектура» (3 tier
architechture) согласно спецификации Java Enterprise
Edition[2] версии 6 (JEE6
). В такой
архитектуре клиентское приложение (в нашем случае, основное
веб-приложение Arta Synergy, мобильные клиенты и Arta Synergy
Desktop Client) не имеет прямого доступа к хранилищу данных (СУБД
либо другому хранилищу), а взаимодействует со слоем бизнес-логики,
который и определяет, какие данные передавать и получать. Это
исключает, например, возможность атаки типа «инъекция SQL» и ей
подобных. В стандартной поставке Arta Synergy SQL-сервер (MySQL)
разрешены только локальные подключения от сервера приложений
(JBoss), что ликвидирует ещё один источник потенциальных проблем с
безопасностью.
Основной способ взаимодействия пользователей с платформой Arta
Synergy — использование главного веб-приложения Synergy, а её
настройка осуществляется через Конфигуратор и Административное
приложение, также работающие через Web. Эти веб-приложения
реализованы с использованием технологии Google Web Toolkit
(GWT
) — технологии написания Rich Internet
Applications, преобразовывающей некоторое подмножество языка Java
в клиентский JavaScript-код. Для обмена данными с сервером этот
код использует генерируемые при компиляции методы RPC
(GWT-RPC
). Технология GWT позволяет
контролировать и защищаться от таких проблем веб-приложений, как:
Cross-Site Scripting (XSS
)
Cross-Site Request Forgery (XSRF
) с помощью
GWT-RPC tokens
[3]
Контроль за выполнением произвольного (не сгенерированного
GWT
) JavaScript-кода
Кроме этого, при проектировании платформы в разрезе доступа пользователей к данным был применён подход «всё, что явно не разрешено, то запрещено». В общем случае, доступ пользователя к данным экземпляра системы определяется совокупностью следующих вещей:
Положение пользователя в организационной структуре предприятия
Членство пользователя в группах доступа
Это, а также наборы разрешений, называемые «ролями» и место их применения (например, каталог хранилища файлов) определяют конкретные наборы данных системы, которые доступны пользователю.
Немаловажным свойством платформы Arta Synergy, применяющимся при её проектировании, является журналирование всех действий пользователей и взаимодействующих с платформой внешних систем, что позволяет проводить аудиты безопасности и, кроме того, разрешать проблемы вида «кто, когда и каким образом просмотрел/добавил/изменил/удалил какие-либо данные».