Вперед: 2.2 Интерфейс к интернет-системе
Вверх: Глава 2. Информационная система
Назад: Глава 2. Информационная система
  Содержание
При создании информационной web-системы WebOS Frontpage было решено
следовать следующим целям:
- предоставить удобную коммуникационную среду сотрудникам
компании, использующей WebOS (здесь и далее: или любой другой группой пользователей),
- предоставить механизм работы с системными изменениями в компании,
- предоставить возможность интеграции других web-систем и
удобную среду их разработки как в рамках единой системы разделения прав
пользователей, так и вне ее,
- предоставить доступ к информационной базе компании,
- система должна предоставлять возможность работы с любого
устройства подключенного к сети Интернет, с минимальными требованиями
к технической базе клиента, обеспечивая так же удаленную работу
сотрудника (актуальность этого направления показана, в частности, в статье Кожекина Н.Е. [7]),
- система должна быть легко настраиваемой и многоязыковой.
Функционально, эти цели в данной работе реализованы следующим образом:
- Коммуникация.
- Первая страница системы выводит все текущие новости компании.
Любой пользователь системы может отправить новость, имеющую заголовок, содержание,
автора и дату истечения срока публикации на первой странице. Все новости
с закончившемся сроком публикации входят в архив, в котором реализован поиск.
Пользователи могут редактировать и передавать в архив свои собственные новости,
пользователи с правами администратора -- любые. Пользователь может удалить новость,
только если дискуссия не была заведена (см. пункт дискуссия). Пользователи
могут комментировать новости и комментарии к ним (часть дискуссии), также
новость может служить предметом дискуссии.
- Дискуссия.
- Создается набор групп дискуссий по темам (категориям). Отличие
от новости является именно в понятии к категорияк, которое имеет каждый
элемент дискуссии, причем элемент дискуссии, являющийся ответом на элемент
дискуссии наследует его категорию и может добавить свою дополнительно.
(в текущей версии элемент дискуссия пока не реализован).
- Запросы и предложения.
- Система запросов и предложений предоставляет
централизованный способ решения системных проблем, задания вопросов,
сообщения ошибок и предложения изменения систем.
Наиболее важным аспектом системы запросов и предложений является отслеживание,
которое реализуется статусами запросов:
- "новый"
- -- создатель запроса только создал запрос, никаких других действий
еще не предпринято,
- "анализируемый"
- -- один из пользователей (как из тех, кому был предписан
запрос, так, возможно, и любой другой) принял запрос на анализ,
- "решенный"
- -- для проблем и вопросов было предложено решение, для запросов
на изменение было реализовано решение, но система еще не изменена,
- "закрытый"
- -- для проблем и вопросов -- создатель запроса подтвердил
удовлетворение решением, для запросов на изменение -- рабочая система была
изменена.
В базе данных запросов и предложений также реализован удобный поиск.
- Информационная база.
- WebOS предоставляет простой доступ к другим
web-системам путем простого меню, редактируемого через web-интерфейс.
Страница ресурса состоит из названия,
категории, краткого описания, и некоторого количества ссылок. Ссылка состоит
из названия, краткого описания и адреса файла (как HTML, так и нет), а также
порядка показа на странице. WebOS
так же предоставляет доступ к страницам ресурсов, тоже полностью
редактируемых через web-интерфейс, включая загрузку файлов. В WebOS
интегрирована навигация, позволяющая иметь доступ к страницам ресурсов
по категориям, также будет реализован поиск (в текущей версии страницы ресурсов еще не были реализованы).
- Авторизация.
- В системе предусмотрено три уровня прав:
- пользователь -- чтение и создание новостей, дискуссий, запросов, чтение страниц ресурсов;
пользователь не видит меню для менеджера и администратора,
- администратор -- управление меню и пользователями, так же реализованное через web-интерфейс,
- менеджер -- управление страницами ресурсов.
- Интеграция.
- Система предоставляет окружение для
работы других web-программ и их легкой интеграции.
- Планирование.
- Система предоставляет функции планирования
событий и дел, отчетов по ним, а также простой календарь.
- Языки.
- На первой страницы системы работает переключатель
языков системы. В параметрах конфигурации так же имеется возможность
настроить на один из языков и отключить переключатель. В настоящий
момент написаны файлы языков для русского и английского.
Это было реализовано программно благодаря разделению информационной системы WebOS Frontpage
на несколько разнородных групп компонент.
- Группа компонент 1 "ГРУППА УСТАНОВКИ" содержит пакеты (rpm6) для
создания www-сервера, на котором будут функционировать системы
использующие модуль. Основное требование к группе: все пакеты должны
содержать такие скрипты, реализующие инсталляцию и деинсталляцию модуля,
которые бы позволяли в любой момент добавлять, удалять или обновлять
представленную данным пакетом компоненту, не нарушая целостности
системы.
- Группа компонент 2 "ГРУППА НАСТРОЙКИ" cодержит
программу постустановочной настройки WebOS.
- Группа компонент 3 - "ГРУППА ФУНКЦИОНАЛЬНОСТИ" содержит восемь модулей.
Эти модули используются WebOS и всеми ее компонентами.
- Модуль работы с паролями - класс Htpasswd для работы с Unix-подобными
файлами паролей.
Так как в системе должна быть предусмотрена возможность
регистрации новых пользователей, то необходимо заострить
внимание на процедуре генерации паролей. Неверные решения
этой задачи (основанные на применении генераторов
случайных чисел) становятся пробелом в безопасности системы.
Это происходит благодаря тому, что генераторы случайных чисел
генерируют очередное случайное число на основании предыдущего 32-битного
случайного числа. Следовательно энтропии в таком пароле будет
меньше 32-бит и будет достаточно перебрать все возможные к затравкик для
получения всех возможных паролей, которые может выдать такая программа.
Использование функции
randomize не помогает,
если их часто в подобной программе вызывать (ибо основаны на измерениях
показаний таймера, а эта величина имеет большую корелляцию между
последовательными вызовами в программе, которая работает очень немного
времени).
Для получения криптографически стойких чисел необходимо привлечение аппаратуры,
но, к счастью, измерения белого шума не единственный способ. В компьютере
достаточно источников к настоящихк случайных чисел: клавиатура, мышь,
ethernet и т.д. и т.п. Да, каждое из таких чисел не вполне случайно, но
несколько БИТ энтропии в каждом таком событии есть. Можно оценить снизу это
число, и смешать их, когда мы не знаем -- какие именно биты случайны (используя
хеш-функции). Однако, все это уже проделано в ОС Linux и с /dev/random
можно читать отличный к белый шумк. Конечно, программа будет
работать не так быстро (получение криптографически стойких случайных
чисел - дело непростое), зато количество энтропии в пароле будет
пропорционально длине пароля. Получение такого пароля таким образом
реализуется процедурой вида:
#!/bin/bash
LC_ALL=C
ALLOWEDCHARS='0-9A-Za-z~!@#$%&*.'
PASSWORD=''
while [ "${#PASSWORD}" -lt 8 ] ; do
CHAR=`dd if=/dev/random bs=1 count=1 2> /dev/null`
if [[ "${CHAR}" == [${ALLOWEDCHARS}] ]] ; then
PASSWORD="${PASSWORD}${CHAR}"
fi
done
echo "${PASSWORD}"
Отметим, что если из /dev/random вычерпывают информацию быстрее,
чем она туда поступает, то чтение блокируется (поэтому использование
/dev/random , что не всегда хорошо -- иногда приходится
довольствоваться /dev/urandom и
мириться с тем, что числа могут быть не вполне случайными).
- Модуль интернационализации (вспомогательный, требуется вышележащим
модулям, но может использоваться и системами).
Это очень простой модуль, задачей которого является обеспечение
возможности интернационализации для других модулей системы. Фактически это
просто класс, переменными которого являются просто строки языков.
- Модуль работы с базой данных (вспомогательный, требуется вышележащим
модулям, но может использоваться и системами). Он используется для
работы с базами данных абстрактно, то есть осуществляется использование
одних функций для других уровней, чтобы они уже не зависели
от того, какую из баз данных, поддерживаемых PHP мы используем.
- Модуль сессии. Сессия очень важное понятие для
WebOS. Она не поддерживается в самом протоколе HTTP,
поэтому для ее реализации требуется посылка специальной
информации от клиента.
- Модуль аутентификации использует модуль работы с паролями
или другие функции для проверки пароля и авторизации сессии.
Авторизация делается средствами HTML форм, а не c HTTP authentication,
так как:
- в HTTP authentication нет понятия logout,
- в HTTP authentication нет понятия expiration,
- в форме мы не привязаны к паре логин/пароль, например,
можно использовать номер покупателя и т.д.
- в HTTP authentication есть опция Save Password, что
не хорошо, если пароль ценен.
- Модуль работы с корзиной покупателя.
- Модуль использования прав. Этот модуль оперирует с информацией
о правах пользователя на то или иное действие. Он работает с
аутентифицированной сессией. Этот модуль считает уже
известной информацию о том, какого класса права аутентифицированного
пользователя. Заботу о том, как и где эти права хранятся, должна
взять на себя использующая система.
- Модуль работы с информацией о пользователях.
Это - к бессмертная сессияк.
Эти восемь модулей позволяют реализовать 4 уровня безопасности.
- Anonymous - сессия без авторизации (возможно и сессию не надо создавать).
- Preauth - система работает на уровне безопасности Anonymous, но
потом вызывает систему, работающую на более высоком уровне
безопасности, чем preauth. Возможно использование модуля работы
с корзиной покупателя.
- Publicnetwork -- сессия+аутентификация. Возможно использование модуля
работы с правами, если необходимо.
- Strict -- реализуется как надстройка на Publicnetwork.
Устанавливается secure соединение, после чего работает Publicnetwork.
Правила установки соединения смотрятся по
.htaccess , который создается
скриптом из группы модулей 2.
- Пятый уровень безопасности пока не реализован и концепция его пока не
разработана. Это уровень Maximum. Ясно, что разработка такого уровня --
действительно сложная задача. Надо использовать библиотеку OpenSSL7
на сервере и разработать JavaScript8 модули для клиента, чтобы он
мог подписывать свои сообщения. Свободно-распространяемых таких
разработок пока не велось, а коммерческие стоят огромных денег.
- Группа компонент 4 "ЯДРО" и все следующие группы построены
как системы, использующих модули группы 3.
Это подсистема установки подсистем, подсистема управления запроса
(работа с ошибками, вопросами и предложениями по системе9,
подсистема управления пользователями.
- Группа компонент 5 "РАСШИРЕННЫЕ ВОЗМОЖНОСТИ" состоит
из дополнительных подсистем: подсистема классификации информации,
подсистема создания страниц пользователей, подсистема управления
проектами, подсистема учета времени, подсистема планирования,
подсистема общения пользователей, подсистема использования
электронной почты, подсистема бухгалтерии и многое другое.
То есть пятая группа реализует портал и виртуальный офис в одной системе.
Реализация всех подсистем происходит типовым образом, за счет реализации
единой оболочки разработки в виде объектно-ориентированного класса на PHP.
Пример:
<?php
page_open(array("sess" => "Example_Session"));
require("frame.inc");
class Main_Page extends Basic_Frame {
var $menu_width = 15;
var $show_menu = 1;
var $boxes_width = 0;
var $show_boxes = 0;
function standard_init () {
global $lang;
$this->title = $lang->hello_world;
}
function generate_content() {
global $lang;
echo $lang->hello_world;
}
}
?>
<?php
$frame = new Main_Page;
$frame->standard_init();
$frame->generate();
page_close();
?>
При этом файл locale/en/lang.inc должен содержать строку:
...
$lang->hello_world = "Hello world!";
...
, а файл locale/ru/lang.inc ее русский перевод.
Вперед: 2.2 Интерфейс к интернет-системе
Вверх: Глава 2. Информационная система
Назад: Глава 2. Информационная система
  Содержание
|