Разработка системы доступа к ресурсам образовательного веб-портала вуза

 















Дипломная работа

на тему «Разработка системы доступа к ресурсам образовательного веб-портала вуза»


СОДЕРЖАНИЕ


ВВЕДЕНИЕ

. ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ

.1 Актуальность темы дипломной работы

.2 Информатизация вуза

.2.1 Процесс информатизации

.2.2 Стратегия информатизации СПбГУТ

.2.3 Веб-портал. Создание образовательного веб-портала вуза

.3 Обзор коммерческих ERP-систем

.3.1 ERP-системы

.3.2 Коммерческие ERP-системы для вузов

.3.3 Преимущества и недостатки коммерческих ERP-систем

.3.4 Ценовые характеристики наиболее распространенных коммерческих ERP-систем

.4 Обоснование разработки веб-портала силами вуза

. ПОСТАНОВКА ЗАДАЧИ И ВЫБОР СРЕДСТВ РАЗРАБОТКИ

.1 Постановка задачи

.2 Требования для клиентской части ПО

.3 Выбор средств разработки для серверной части ПО

.3.1 Веб-сервер Apache

.3.2 Интерпретатор языка PHP

.3.3 Сервер управления базами данных MySQL

.3.4 Библиотека классов Zend Framework

.3.5 Общая характеристика выбранных средств разработки

. РАЗРАБОТКА АЛГОРИТМОВ СИСТЕМЫ ДОСТУПА

.1 Классификация информационных ресурсов

.2 Концепция создания системы доступа для веб-портала вуза

.3 Система доступа. Алгоритм доступа к информационным ресурсам

. РАЗРАБОТКА ПРОГРАММНОГО КОДА, РЕАЛИЗУЮЩЕГО МАТРИЦУ ВЗАИМОДЕЙСТВИЯ ГРУПП ПОЛЬЗОВАТЕЛЕЙ И ИНФОРМАЦИОННЫХ РЕСУРСОВ

.1 Группы пользователей

.2 Регистрация новых пользователей

.3 Выбор вида авторизации и его реализация

.3.1 Авторизация средствами web-сервера

.3.2 Авторизация с помощью заголовка

.3.3 Авторизация с помощью cookies

.3.4 Авторизация с помощью сессий

.3.5 Реализация алгоритма авторизации-

.4 Применение механизма аутентификации

.5 Реализация распределения прав доступа пользователей к информационным ресурсам веб-портала

.6 Функции «Личного кабинета»

. ОБЕСПЕЧЕНИЕ БЕЗОПАСНОСТИ ИНФОРМАЦИОННЫХ РЕСУРСОВ

.1 Методы защиты информации

.2 Программные меры защиты информации, реализованные в разработанной системе доступа

.3 Алгоритм шифрования паролей SHA1

.4 Применение CAPTCHA

ЗАКЛЮЧЕНИЕ

ПРИЛОЖЕНИЯ


ВВЕДЕНИЕ


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

Решением этой задачи является создание образовательного портала СПбГУТ, который должен стать системой авторизированного доступа к информационным ресурсам единой образовательной нфокоммуникационной среды вуза.

С появлением веб-портала возникает проблема обеспечения безопасности информационных ресурсов веб-портала и предоставления доступа к этим ресурсам пользователям, имеющим соответствующую степень доступа к ресурсу. Учитывая то, что веб-портал является информационной системой, предоставляющей доступ для множества пользователей, возникает необходимость предоставления каждому пользователю уникального набора прав доступа к информационным ресурсам веб-портала.

В данной работе была поставлена цель- разработка системы доступа к ресурсам образовательного веб-портала СПбГУТ, которая включает в себя реализацию следующих задач:

-анализ материалов предметной области;

-выбор инструментов для разработки;

-разработка алгоритмов работы системы доступа;

-реализацию возможности регистрации новых пользователей;

-создание БД для хранения информации о пользователях системы;

-применение механизма аутентификации, управления сессиями и реализацию авторизации пользователей системы;

-создание групп пользователей и механизма определения пользователей в группы;

-разработку и программную реализацию механизмов распределения прав доступа к информационным ресурсам веб-портала;

-создание функций для пользователей системы и предоставление доступа к этим функциям только для определенных групп пользователей;

-применение методов для обеспечения безопасности информационных ресурсов.

Общая структура дипломной работы, обусловленная указанными задачами, состоит из 5 глав.

глава представляет собой обзор предметной области, в ней рассматривается процесс и стратегия информатизации СПбГУТ, необходимость создания веб-портала в рамках решения задач по информатизации и актуальность создания системы доступа к ресурсам веб-портала.

Во 2 главе формулируется постановка задачи, требования, предъявляемые для клиентской части ПО и обоснование выбора средств разработки серверной части ПО.

В 3 главе описывается разработка алгоритмов системы доступа и всех ее элементов на основании сформулированной концепции системы доступа к ресурсам и определяется понятие информационных ресурсов.

глава представляет собой практическую реализацию программного кода, реализующего матрицу взаимодействия групп пользователей и информационных ресурсов. В этой главе создаются группы пользователей, реализуется возможность регистрации новых пользователей и процедура авторизации, использующая механизмы аутентификации и управления сессиями, также выполненные в программном коде, создается программный механизм распределения прав доступа пользователей к информационным ресурсам веб-портала и задаются функции «Личного кабинета пользователя».

В 5 главе приводится описание мер предпринятых для обеспечения безопасности информационных ресурсов образовательного веб-портала, в частности программных мер защиты информации, реализованных в разработанной системе доступа, рассматривается алгоритм шифрования паролей SHA1 и реализация кодов подтверждения.


1.1 ОБЗОР ПРЕДМЕТНОЙ ОБЛАСТИ


.1 Актуальность темы дипломной работы


Веб-портал представляет собой систему, предоставляющую доступ для множества пользователей и обладающую определенным набором информационных ресурсов.

Предполагается, что некоторые данные, составляющие информационный ресурс, например личные дела сотрудников и студентов вуза, финансовая документация, оценки, должны быть доступны не всем посетителям портала, а только определенной группе лиц или даже конкретному человеку. Таким образом, возникает необходимость предоставления каждому пользователю своего уникального набора прав доступа к информационным ресурсам, для реализации которого необходимо разработать систему прав доступа к информационным ресурсам веб-портала, представляющую собой совокупность механизмов распределения прав доступа к ресурсам и дополнительных элементов для их реализации и функционирования, и применения методов обеспечения безопасности информационных ресурсов.


.2 Информатизация вуза


.2.1 Процесс информатизации

Стремительное развитие информационных и коммуникационных технологий является одним из факторов, определяющих вектор развития мирового сообщества 21 века. Цивилизация неуклонно движется к построению информационного общества, где решающую роль играет именно информация.

век знаменует процесс информатизации всех сфер современного общества.

Информатизация- это организационный социально-экономический и научно-технический процесс создания оптимальных условий для удовлетворения информационных потребностей на основе формирования и использования информационных ресурсов.

Жизнедеятельность человека пронизана информационными потоками, поэтому без ИТ невозможно нормальное функционирование общества во многих областях его жизни.

Информация все больше становится мерилом всех сфер человеческого общества, в том числе и национальной культуры той или иной страны. Это приводит, с одной стороны, к огромной потребности в знаниях для общества в целом, с другой стороны - к развитию и созданию средств для удовлетворения личностных потребностей отдельного человека.

Существует мнение, что мир пережил несколько информационных революций. Первая информационная революция связана с изобретением и освоением человеческого языка, который, точнее устная речь, выделила человека из мира животных. Это позволило человеку хранить, передавать, совершенствовать, увеличивать приобретенную информацию.

Вторая информационная революция заключалась в изобретении письменности. Зафиксированное в письменных текстах знание было ограниченное, и, следовательно, мало доступно. Так было до изобретения книгопечатания. Что в свою очередь обосновало третью информационную революцию. Здесь наиболее очевидна связь информации и технологии. Механизмом этой революции был печатный станок, который удешевил книгу и сделал информацию более доступной. Четвертая революция, плавно переходящая в пятую, связана с созданием современных информационных технологий (телеграф, телефон, радио, телевидение). Но самым поразительным было создание современных компьютеров и средств телекоммуникаций.

Рождение новых технологий всегда носило революционный характер, но, с другой стороны, технологические революции не уничтожали классических традиций. Каждая предшествующая технология создавала определенную материальную и культурную базу, необходимую для появления последующей.

Сегодня стало очевидным преобладание информационной составляющей деятельности людей над всеми другими ее формами и компонентами. Поэтому слово "информация" приобрело поистине магическое значение, а современные информационные технологии являются подлинной движущей силой мирового экономического и технологического развития, преумножая сегодняшние знания и духовные ценности, расширяя сферы использования достижений науки и техники XX века.

Наблюдается рост значимости новых информационных технологий.

Информационная технология - это совокупность методов, производственных процессов и программно-технических средств, объединенных в технологическую цепочку, обеспечивающую сбор, обработку, хранение, распространение и отображение информации с целью снижения трудоемкости процессов использования информационного ресурса, а также повышения их надежности и оперативности.

В связи с применением новой информационной технологии, основанной на использовании средств связи, компьютеров, широко используется понятие информационная система.

Информационная система - организационно упорядоченная совокупность документов (массивов документов) и информационных технологий, в том числе с использованием средств вычислительной техники и связи, реализующих информационные процессы.

Развитие информационных технологий стало символом научно-технического прогресса и значительно расширило горизонты интеллектуальных возможностей человека. За короткое время своего существования электронно-вычислительная техника сильно преобразилась: стала высокоэффективной, компактной, простой в обращении, относительно дешевой.

Учитывая тот факт, что на данном этапе развития общества информатизация охватывает почти все сферы жизни человека, и без информационных технологий невозможно нормальное функционирование общества во многих областях его жизни, необходимо обеспечить максимально возможный уровень внедрения ИТ в те сферы жизни, где это является необходимым.


1.2.2 Стратегия информатизации СПбГУТ

Процесс информатизации охватил и сферу образования.

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

Информационно-образовательная среда - это системно организованная совокупность образовательных учреждений и органов управления, банков данных, локальных и глобальных информационных сетей, книжных фондов библиотек, система их предметно-тематической, функциональной и территориальной адресации и нормативных документов, а также совокупность средств передачи данных, информационных ресурсов, протоколов взаимодействия, аппаратно-программного и организационно-методического обеспечения, реализующих образовательную деятельность.

Информатизация является одним из приоритетных направлений деятельности СПбГУТ, ориентированным на формирование информационной культуры сотрудников и студентов, увеличение эффективности деятельности вуза.

Внедрение НИКТ способствует повышению качества деятельности СПбГУТ в рамках всех его процессов, позволяет подготовить грамотных специалистов, владеющих современными информационными технологиями, что в современных условиях особенно актуально.

В рамках проекта информатизации была проведена реконструкция учебного корпуса и внедрены новейшие технологии:

-мультимедийные лекционные аудитории позволяют читать лекции в электронной форме, они оборудованы мультимедиа проекторами, интерактивными досками;

-вся территория университета покрыта зоной действия WiFi;

-трансляция материала на большие экраны в лекционной аудитории с возможностью дублирования на персональный компьютер студента через WiFi , что повышает качество восприятия учебного материала;

-компьютерные классы снабжены современным оборудованием;

-каждый студент получил личный ноутбук фирмы Apple;

-WiFi позволяет делать рассылку новостей, учебных материалов и менять расписание в онлайн режиме, а студенту получать эту информацию сразу, как только он войдет в Интернет";

-внедряется Единая система программного обеспечения.

На сегодняшний день завершены работы по установке и запуску оборудования в здании учебного лабораторного комплекса №4. Данный комплекс позволяет одновременно вести занятия в 18 поточных и 60 групповых аудиториях (лабораториях), снабженных необходимым комплектом мультимедийного оборудования. Подготовлены к работе 2 конференц-зала с синхронным переводом и режимами видеозаписи, видеотрансляции (видеоконференции). В полном объеме подготовлен к работе центр обработки данных, установлено программное обеспечение. В здании обеспечено полное покрытие Wi-Fi, студентам и преподавателям выдано 4800 ноутбуков с возможностью работы в сети, вследствие чего все здание превращено в единый учебно-лабораторный комплекс.

На сегодняшний день СПбГУТ располагает существенными материально-техническими ресурсами.

Стратегия проведения информатизации СПбГУТ на современном этапе сводится к созданию Единой образовательной инфокоммуникационной среды (ЕОИС) университета, что обусловлено коренными изменениями в сфере образования ведущих европейских стран, в частности осуществление широкомасштабных программ информатизации образования.

Основными задачами создания ЕОИС ГУТ являются:

-переход на новый уровень образования и повышение качества подготовки специалистов;

-обеспечение более высокого уровня конкурентоспособности Университета в условиях рыночной экономики;

-создание единой информационной среды с обеспечением доступа к ней преподавателей и студентов ГУТ на основе использования новейших информационных и телекоммуникационных технологий.

Главная задача ЕОИС заключается именно в создании единой информационной среды с обеспечением доступа к ней преподавателей и студентов ГУТ на основе использования новейших информационных и телекоммуникационных технологий.

Решением этой задачи является создание образовательного портала СПбГУТ, который должен стать системой авторизированного доступа к информационным ресурсам единой образовательной инфокоммуникационной среды (ЕОИС) вуза.


.2.3 Веб-портал. Создание образовательного веб-портала вуза

Веб-портал (portal от лат. <#"justify">1)Общедоступные, или горизонтальные, порталы (называемые иногда мегапорталами), такие как Yahoo!, Lycos, Excite, Rambler. Эти порталы предназначены для самой широкой аудитории, что отражается на содержании предоставляемой ими информации и услуг - обычно они носят общий характер (например, новости о политических событиях и культурной жизни, электронная почта, новостные рассылки и т.д.). Сфера деятельности таких порталов пересекается со сферой деятельности средств массовой информации, поэтому в последнее время наблюдаются процессы слияния общедоступных порталов и средств массовой информации в рамках одной компании.

)Вертикальные порталы предназначены для специфических видов рынка и обслуживает аудиторию, пользующуюся услугами этого рынка или работающую на нем. Примерами таких порталов могут служить приложения B2C (Business-to-consumer), например туристические агентства, предоставляющие услуги по бронированию мест в гостиницах, заказу и доставке билетов, доступу к картам и сведениям об автомобильных маршрутах и т.д., либо порталы типа B2B (business-to-business), позволяющие своим клиентам реализовывать совместные бизнес-операции (например, выбирать поставщиков и осуществлять закупку товаров, проводить аукционы и т.д.). Число подобных порталов в последнее время быстро растет, поскольку всё новые рынки товаров и услуг перемещаются в Internet.

)Корпоративные порталы предназначены для сотрудников, клиентов и партнеров одного предприятия (иногда они называются B2E-порталы - Business-to-employees). Пользователи такого портала получают доступ к предназначенным им сервисам и приложениям в зависимости от их роли и персонального профиля, и это наиболее интересная категория порталов в плане реализации корпоративной инфраструктуры и интеграции приложений. Назначением корпоративного портала является предоставление внешним и внутренним пользователям возможности персонифицированного доступа ко всем корпоративным данным и приложениям (включая неструктурированные и разнородные данные), объединение изолированных моделей бизнеса, интеграция различных корпоративных приложений (в том числе приложений бизнес-партнеров), обеспечение полноценного круглосуточного доступа всех пользователей (включая и мобильных) к ресурсам компании 24 часа в сутки независимо от их места пребывания.

Создаваемый образовательный веб-портал СПбГУТ является корпоративным порталом, который должен обеспечить возможность авторизированного доступа студентов и сотрудников вуза к информационным ресурсам ЕОИС вуза.

Основой концепции создания образовательного портала СПбГУТ является подход, рассматривающий организацию учебного процесса в высшем учебном заведении как единый процесс, состоящий из ряда частных взаимосвязанных процессов. Каждый из частных процессов находит отображение в функциональном блоке решения- модуле.

Каждый функциональный блок взаимодействует с другими как на уровне процессов, так и на уровне обмена данными.

В рамках системы веб-портала происходит информационный кругооборот.

Примерная структура портала предполагает наличие следующих функциональных блоков-модулей:

-модуль системы доступа к ресурсам портала;

-модуль учета успеваемости;

-модуль «Личный кабинет»;

-модуль «Сайт»;

-модуль «Электронная библиотека» и интеграция с научно-технической библиотекой СПбГУТ;

-модуль «Деканат»;

-модуль «Абитуриент;

-система контроля уровня знаний учащихся;

-студенческий сектор.

Структура портала показана на рис. 1.















Рис. 1. Структура портала


Каждый модуль системы взаимодействует с базой данных, в которой хранится информация, оперируя которой модули системы могут успешно выполнять предназначенные им функции.

Основные функции веб-портала:

) Сведение в единую управляемую систему разнородных служебных и профессиональных информационных потоков и ресурсов, то есть веб-портал должен стать инструментом повседневной деятельности всех подразделений, сотрудников и учащихся СПбГУТ.

) Презентационные функции.

1.3 Обзор коммерческих ERP-систем


.3.1 ERP-системы

ERP-система (англ. <#"justify">Классификация и история возникновения.является результатом сорокалетней эволюции управленческих и информационных технологий.

В 60е годы началось использование вычислительной техники для автоматизации различных областей деятельности предприятий. Тогда же появился класс систем планирования потребностей в материалах (MRP - Material Requirements Planning). В основе функционирования подобных систем лежало понятие спецификации изделия (BOM - Bill Of Materials) и производственной программы (MPS- Master Production Schedule).

В 80х годах появился новый класс систем - системы планирования производственных ресурсов предприятия (Manufacturing Resource Planning). Из-за схожести аббревиатур такие системы стали называть MRPII.

Основное отличие MRPII от MRP, заключается в том, что системы MRPII предназначены для планирования всех ресурсов предприятия (включая финансовые и кадровые). В следствии усовершенствования систем MRPII и их дальнейшего функционального расширения появился класс систем ERP. Термин ERP был введен независимой исследовательской компанией Gartner Group в начале 90х годов.системы, предназначены не только для производственных предприятий, они также эффективно позволяют автоматизировать деятельность компаний предоставляющих услуги.

Потребность в автоматизации управленческих процессов впервые была осознана в конце 60-х - начале 70-х годов, когда стало ясно, что управление крупной корпорацией подчиняется тем же законам, что и любая бюрократическая структура. Один из законов Паркинсона гласит: штат организации никак не связан с объемом выполняемой ею работы. Иными словами, с ростом численности управленческого персонала КПД его работы падает до нуля.

В связи с этим родилась идея: организовать труд управленцев при помощи автоматизированной системы примерно так, как конвейер организует труд рабочих. В итоге родилась концепция регулярного менеджмента, опирающегося не на талантливых одиночек, а на формально описанные процедуры, делающие эффективным труд каждого управленца.

Функции ERP-систем:

В основе ERP-систем лежит принцип создания единого хранилища данных, содержащего всю корпоративную бизнес-информацию и обеспечивающего одновременный доступ к ней любого необходимого количества сотрудников предприятия, наделённых соответствующими полномочиями. Изменение данных производится через функции (функциональные возможности) системы.система состоит из следующих элементов:

-модель управления информационными потоками (ИП) на предприятии;

-аппаратно-техническая база и средства коммуникаций;

-СУБД, системное и обеспечивающее ПО;

-набор программных продуктов, автоматизирующих управление ИП;

-регламент использования и развития программных продуктов;

-IT-департамент и обеспечивающие службы;

-собственно пользователи программных продуктов.


1.3.2 Коммерческие ERP-системы для вузов

Многие производители ERP-систем предлагают вузам информационно-аналитические системы класса ERP для управления высшим учебным заведением, представляющие собой инструмент для автоматизации управления учебным процессом и всей финансово-хозяйственной деятельностью вуза.

Наиболее распространенными на российском рынке являются следующие системы :

-« Галактика Управление Вузом» (фирма-производитель «Галактика»),

-«Университет» (фирма-производитель «RedLab»),

-«Naumen University» (фирма-производитель «Naumen»),

-«1с Предприятие 8.0» (фирма-производитель «1С»)

-и другие.


1.3.3 Преимущества и недостатки коммерческих ERP-систем

В зависимости от производителя, ERP-системы можно разделить на 2 группы, существенно отличающиеся друг от друга: российские и зарубежные. Каждая из которых обладает своими достоинствами и недостатками.

Российские ERP-системы

Недостатки:

-недостаточно большое время развития систем (8-12 лет);

-ограниченность ресурсов разработчиков;

-что не может не сказываться на функциональной наполненности систем и их техническом качестве;

-негибкость системы.

Большинство систем исходно создавались для автоматизации бухгалтерского учета и постепенно эволюционировали в сторону расширения круга решаемых задач, но ни одна из них до сих пор не способна решать вопросы автоматизации управления предприятием в комплексе и не отвечает современным требованиям к системам автоматизации деятельности учреждений.

Достоинства:

-функциональность настроена на Российские вузы;

-относительно невысокая стоимость.

Зарубежные ERP-системы

Достоинства:

-относительно большое время развития (до 20 лет и более);

-огромное вложение ресурсов позволяет лидирующим системам отвечать всем современным требованиям.

Недостатки:

-проблема локализации;

-сложность и трудоемкость изучения функциональных возможностей;

-функциональность настроена на зарубежные вузы;

-сравнительно высокая стоимость первоначальных вложений и высокая стоимость сопровождения.

Общей характеристикой этих групп является отсутствие подробной стандартизированной документации, то есть системы являются закрытыми и практически не поддаются модернизации и изменению. Тем самым создается жесткая зависимость от разработчиков конкретной подсистемы.

образовательный портал аутентификация программный

1.3.4 Ценовые характеристики наиболее распространенных коммерческих ERP-систем

Одной из наиболее важнейших характеристик этих систем является стоимость системы, которая складывается из стоимости программного решения в целом (либо отдельных модулей) , стоимости внедрения и стоимости следующих услуг:

-бизнес-анализ;

-составление технического задания;

-реализация доработок в соответствии с техническим заданием (ТЗ);

-установка и настройка ПО;

-техническая поддержка.

На рис. 2. представлена примерная стоимость наиболее распространенных систем без учета внедрения из расчета на 7000 рабочих мест.















Рис. 2. Примерная стоимость ERP-систем из расчета на 7000 рабочих мест


Oracle, SAP представляют собой программные платформы, на базе которых реализованы такие ERP-системы как «Naumen University» (фирма-производитель «Naumen») и «Университет» (фирма-производитель «RedLab») соответственно.


1.4 Обоснование разработки веб-портала силами вуза


Учитывая специфику СПбГУТ в рамках решения задач по информатизации оптимальным вариантом будет создание собственной системы для автоматизации учебного процесса, потому что:

-СПбГУТ профилирующий вуз, выпускающий программистов;

-для студентов вуза появится возможность реализовать свои теоретические познания в области информационных систем и технологий на практике;

-есть возможность разработки с учетом специфики нашего вуза;

-для сотрудников и студентов вуза специфика большинства процессов, на которых базируется деятельность вуза, требующих автоматизации хорошо известна, поэтому разработка будет ориентирована на автоматизацию данных процессов с учетом особенностей и потребностей нашего вуза;

-отличие коммерческих систем в данном случае заключается в том, что в таковых реализован только стандартный набор функциональных возможностей;

-существует возможность получения предельно полной документации и комментариев к программному коду, что дает возможность модифицировать, развивать, наращивать и усложнять систему в зависимости от изменяющихся потребностей ее пользователей и как следствие - преемственность разработок;

-в данном случае отсутствует зависимость от разработчиков системы;

-приемлемая общая стоимость разрабатываемой системы.


2. ПОСТАНОВКА ЗАДАЧИ И ВЫБОР СРЕДСТВ РАЗРАБОТКИ


.1 Постановка задачи


Предварительный анализ, проведенный на этапе разработки концепции системы доступа к ресурсам веб-портала, выявил следующие требования к разрабатываемой системе доступа:

-необходимо организовать доступ каждому из пользователей к своему индивидуальному набору ресурсов;

-процесс делегирования прав доступа должен быть максимально автоматизирован;

-реализовать объединение пользователей в группы;

-пользователи должны автоматически распределяться по группам;

-количество групп соответствует числу должностей сотрудников вуза.

Выполнение этих требований должно осуществляться с учетом следующих количественных характеристик:

-количество пользователей системы: около 7000;

-количество ресурсов: более 10 000.

(по предварительным оценкам)


.2 Требования для клиентской части ПО


Все ПО должно состоять из двух частей: клиентской и серверной.

Клиентская часть представляет собой ПО работающее на компьютере пользователя и обеспечивающее взаимодействие разрабатываемой ИС с пользователем.

Серверная часть- это ПО, работающее на стороне сервера.

В качестве клиентской части будет выступать обычный интернет-браузер (веб-браузер).

Веб-браузер - комплексное приложение для обработки и вывода разных составляющих веб-страницы и для предоставления интерфейса между веб-сайтом и его посетителем.

Практически все популярные браузеры распространяются бесплатно или «в комплекте» с другими приложениями:

-Internet Explorer (совместно с Microsoft Windows);

-Mozilla Firefox (бесплатно, свободное ПО);

-Safari (совместно с Mac OS или бесплатно для Windows);

-Opera (бесплатно, начиная с версии 8.50);

-Google Chrome (бесплатно, свободное ПО);

-Avant (бесплатно, свободное ПО).

Единственное требование к стороне клиента - наличие подключения к внутренней сети вуза (для доступа с рабочего места) или интернет-соединения (для удаленной работы).

Ввиду того что в СПбГУТ сотрудникам и студентам выданы ноутбуки фирмы Apple система адаптирована к браузеру MacOS X - Safari.

Учитывая тот факт, что многие пользователи могут использовать браузеры различных производителей, система адаптирована для большинства браузеров- является кросс-браузерной.

Кросс-браузерность - свойство сайта отображаться и работать во всех популярных браузерах идентично. Под идентичностью понимается отсутствие развалов верстки и способность отображать материал с одинаковой степенью читабельности.

Обобщив все вышесказанное, сформулируем кратко требования

для клиентской части ПО:

)Любой веб-браузер

)Доступ к внутренней сети вуза или Интернет соединение


2.3 Выбор средств разработки для серверной части ПО


.3.1 Веб-сервер Apache

С браузерами имеют дело Web-пользователи, которые подходят к их выбору и анализу с надлежащей тщательностью.

Серверы видны только техническому персоналу сайтов. Хотя существует множество различных Web-серверов, около 80% всех сайтов, согласно недавним исследованиям Netcraft, работают всего на двух из них - Apache и Internet Information Server (IIS). Оба эти сервера - тщательно проработанные продукты. Статистику использования серверов по состоянию на 2010 год можно увидеть на рис. 3.


Рис. 3. Доля рынка для топовых серверов по всем доменам на 2010 год


Теперь рассмотрим тенденции развития топовых (наиболее популярных) на мировом рынке веб-серверов и прирост в количественной и процентной оценке (информация представлена в табл. 1.)

Табл. 1. Тенденция развития топовых веб-серверов

СерверЯнварь 2010Доля рынкаФевраль 2010Доля рынкаИзменениеApache111,307,94153.84%112,903,92654.46%0.62Microsoft49,792,84424.08%50,928,22624.57%0.48Google14,550,0117.04%14,315,4646.91%-0.13nginx15,568,2247.53%13,978,7196.74%-0.79lighttpd955,1460.46%1,097,6850.53%0.07

-Apache - свободный веб-сервер, наиболее часто используемый в Unix-подобных операционных системах;

-IIS от компании Microsoft, распространяемый с ОС семейства Windows NT.

-nginx - свободный веб-сервер, разработанный Игорем Сысоевым в 2002 году и пользующийся большой популярностью на крупных сайтах lighttpd - свободный веб-сервер;

-lighttpd - веб-сервер, разрабатываемый с расчётом на быстроту и защищённость, а также соответствие стандартам. Это свободное программное обеспечение, распространяемое по лицензии BSD.

-Google Web Server - веб-сервер, разработанный компанией Google;

В табл. 2. представлена общая информация о различных веб-серверах и , что очень важно для решающего выбора, о типе распространения и открытости программного кода.


Табл. 2. Общая информация о веб-серверах

НазваниеАвтор и год созданияРаспространениеOpenSource <#"justify">-эффективность;

-масштабируемость;

-безопасность;

-работоспособность;

-соответствие стандартам;

-гибкость;

-управляемость.

Сравнивая эти веб-сервера, можно сделать вывод, что Apache обладает рядом преимуществ:

)является бесплатным, то есть распространяются по свободным лицензиям, и не требуют финансирования для приобретения и установки.

)является открытым ПО (программное обеспечение с открытым исходным кодом)

)Отличается более высокой надежность и гибкостью конфигурации.

Согласно исследованиям специалистов в области обеспечения безопасности веб-серверов IIS является более уязвимым для хакеров, чем Apache.

Следовательно, именно Apache будет самым оптимальным вариантом для разработки системы доступа к ресурсам веб-портала.


2.3.2 Интерпретатор языка PHP

В качестве языка программирования системы следует выбрать PHP, т.к. в отличие от основных своих альтернатив

-CGI-сценариев (Common Gateway Interface, обычно (но не обязательно) написанных на языке Perl);

-ASP (Active Server Pages);

-JSP (Java Server Pages).

Он отличается простотой, а ASP и CGI являются достаточно полными языками и, следовательно, более сложны в усвоении, при этом первый требует понимания VBScript, a CGI - Perl (или С), к тому же и написанные сценарии выполняются с более высокой скоростью, чем на CGI.

РНР был разработан специально для создания динамических Web-страниц, что подразумевает выполнение им именно этих задач быстрее и легче, чем альтернативными языками.

Также язык PHP отличается богатой функциональностью и благодаря всем своим преимуществам является одним из самых распространенных языков программирования и используется на более чем трех миллионах Web-сайтов, Популярность в области построения веб-сайтов <#"justify">-многопоточность, поддержка нескольких одновременных запросов;

-оптимизация связей с присоединением многих данных за один проход;

-записи фиксированной и переменной длины;

-гибкая система привилегий и паролей;

-гибкая поддержка форматов чисел, строк переменной длины и меток времени;

-интерфейс с языками C и Perl, PHP;

-хорошая поддержка со стороны провайдеров хостинг услуг.

Самыми конкурентными преимуществами MySQL являются:

-производительность (из-за чего Google и Yahoo используют именно MySQL);

-масштабируемость (в компании Omniture в реальном масштабе времени используется 7000 серверов MySQL);

-надежность (по оценкам специалистов, в коде проприетарных продуктов содержится в десять с лишним раз больше уязвимостей);

-простота использования, простота внедрения (за 15 минут можно скачать и запустить систему);

-открытая и модульная разработка;

-низкие совокупные затраты (платить нужно только при потребности в поддержке).

СУБД (система управления базами данных) MySQL является наиболее приемлемой в рамках решения задач разработки системы доступа.


2.3.4 Библиотека классов Zend Framework

Zend Framework - это свободная библиотека для разработки веб-приложений и веб-сервисов на языке PHP.Framework пытается следовать духу PHP, предоставляет простые интерфейсы и мощную функциональность для разработки приложений. Он предоставляет расширения для построения современных, быстрых и безопасных сайтов.Framework - это библиотека классов на основе которой по определённым правилам строится приложение. Стоит отметить, что использования библиотек классов существенно сокращают время на разработку приложения, за счёт использования ранее созданного и отлаженного кода. И что не мало важно, этот код можно модифицировать используя механизм наследования. Разработчики Zend Framework реализовали множество классов, которые позволяют реализовать стандартные задачи которые стоят перед веб - программистом. Например: доступ к базам данных, механизм аутентификации, кэширования и тд. Более того они не забыли и о безопасности применения этих средств.Framework расширяет язык php, его главный критерий простота, использованы лучшие приёмы объектно - ориентированного программирования , дружественная лицензия, и хорошо протестированный быстро - исполняемый код. Zend Framework предоставляет качественную библиотеку классов на php 5, используя такие хорошо зарекомендовавшие себя приёмы, как шаблоны проектирования (design patterns), модульное тестирование (unit -тестирование), слабые связи (oose coupling).

2.3.5 Общая характеристика выбранных средств разработки

Исходя из всего вышеперечисленного для разработки системы доступа веб-портала оптимальной является комбинация

-веб-сервер Apache;

-интерпретатор языка PHP;

-сервер управления базами данных MySQL;

-библиотека классов Zend Framework.

Важной характеристикой всего ПО, выбранного для разработки системы доступа является то, что оно является свободно распространяемым с открытым исходным кодом.


3. РАЗРАБОТКА АЛГОРИТМОВ СИСТЕМЫ ДОСТУПА


.1 Классификация информационных ресурсов


В широком смысле информационный ресурс- это идеи человечества и указания по их реализации, накопленные в форме, позволяющей их воспроизводство.

Под информационным ресурсом (ИР) применительно к данной разработке подразумевается ресурс ЕОИС вуза, который содержит информационную составляющую и является частью информационного потока.

Все информационные потоки ЕОИС условно разделены на «внешние» и «внутренние».

Информационные ресурсы также разделены на 2 группы:

)Внутренние (является частью «внутреннего» информационного потока)

)Внешние (является частью «внешнего» информационного потока)

Ограничение доступа к информационным ресурсам реализовано по нижеследующему алгоритму.

Основой портала вуза является «личный кабинет» пользователя, из которого он будет иметь доступ ко всем внутренним ресурсам портала.

Получение доступа к внутренним информационным ресурсам портала должно осуществляться только для зарегистрированных пользователей, прошедших процедуру аутентификации и авторизации.

Внешние информационные ресурсы доступны для всех посетителей веб-портала


3.2 Концепция создания системы доступа для веб-портала вуза


Существует несколько методик описания прав доступа. Наиболее широко распространена в настоящее время методика назначения на объекты списков прав доступа (access control list - ACL). Каждый элемент этого списка содержит идентификатор пользователя (идентификатор группы, идентификатор субъекта) и назначенный этому идентификатору вид доступа. Расширения этой схемы позволяют включать в список элементы, явно запрещающие доступ к объекту, а также указывать возможность наследования элемента списка вниз по иерархии объектов.

Список доступа может быть сохранен вместе с объектом. Достоинство хранения списка доступа вместе с защищаемым объектом состоит в том, что оказывается легко проверить назначенные права доступа к любому объекту, а также легко их изменить. Однако при большой мощности и высокой динамике множества защищаемых объектов списки занимают значительное место, а административные усилия по управлению ими могут стать неприемлемо большими. Это в еще большей степени относится к системам, где множество объектов неоднородно, а связи между ними имеют более сложную, чем древовидную, структуру, что не позволяет простым образом задать наследование прав доступа. Для преодоления этой трудности необходимо использовать ролевую модель управления доступом. Эта модель уменьшает объем административных операций. При хорошо продуманной системе ролей управление обычно сводится к назначению пользователям или изъятию у них необходимых ролей в рамках динамических рабочих групп.

Под ролью обычно понимают множество объектов, к которым пользователь имеет доступ, и, возможно, список допустимых операций над ними. Сервис авторизации Web-портала СПбГУТ представляет роль в виде описания, состоящего из двух компонентов:

-описания алгоритма вычисления множества объектов;

-списка операций, разрешенных на этом множестве.

Алгоритм описывается в виде комбинации выражений. В выражениях могут использоваться параметры, конкретные значения которых указываются при назначении роли пользователю.

Помимо пользователей, роли могут быть назначены и группам. Группы пользователей могут быть заданы как традиционным способом, через перечисление входящих в них пользователей, так и выражением, позволяющим динамически вычислять состав группы на основе атрибутов объектов, представляющих пользователей.


3.3 Система доступа. Алгоритм доступа к информационным ресурсам


Система доступа - это совокупность правил доступа к ресурсам информационных систем.

Алгоритм предоставления доступа к ресурсам, реализованный в модуле системы доступа, (схематично представлен на рис. 4.) выглядит следующим образом:

)Сначала пользователи системы условно разделяются на группы.

)Определяются доступные информационные ресурсы, которые разделяются на 2 группы с уже предусмотренным ограничением доступа к ним

)Происходит формирование привилегий- степени доступа к ИР для пользователей системы

)Определяется принадлежность пользователя, запросившего доступ к ресурсу, к группе

)Происходит делегирование привилегий доступа к ИР для данного пользователя

















Рис. 4. Алгоритм предоставления доступа к ресурсам


4. РАЗРАБОТКА ПРОГРАММНОГО КОДА, РЕАЛИЗУЮЩЕГО МАТРИЦУ ВЗАИМОДЕЙСТВИЯ ГРУПП ПОЛЬЗОВАТЕЛЕЙ И ИНФОРМАЦИОННЫХ РЕСУРСОВ


.1 Группы пользователей


Все пользователи веб-портала условно разделены на группы.

В зависимости от принадлежности к группе пользователь получает привилегии в системе.

Рассмотрим подробнее группы, которые определены в системе, и их права доступа к ИР.

а) Группа «Гость»- представляет собой всех посетителей портала, для них предусмотрен доступ ко всем внешним ресурсам веб-портала.

б) Группа «Реальные (действующие) пользователя»- представляет собой совокупность пользователей веб-портала, для которых предусмотрен доступ к внутренним ИР.

Включает в себя подгруппы:

) Учащийся - объединяет всех учащихся вуза в подгруппу, состоящую из следующих подгрупп:

-«Студент»;

-«Аспирант».

) Сотрудник- объединяет всех сотрудников вуза в подгруппу и состоит из следующих подгрупп:

-«Методист»;

-«Преподаватель»;

-«Административная должность».

) «Родители»- представляет собой пользователей, которым необходим доступ к ИР успеваемости соответствующего им представителя из подгруппы «Студент».

в) Группа «Потенциальные пользователи»- представляет собой всех потенциальных пользователей системы и включает подгруппы:

) «Абитуриент»- объединяет всех абитуриентов, которые хотят обучаться в СПбГУТ;

) «Потенциальный сотрудник»- объединяет всех сотрудников, которые хотят работать в СПбГУТ.

Гибкость и открытость разработанной структуры заключается в возможности создания бесконечного количества групп подгрупп для пользователей. При этом каждая группа может включать в себя неограниченное количество пользователей, что крайне важно для такой большой структуры, как высшее учебное заведение.


4.2 Регистрация новых пользователей


Для абитуриентов и потенциальных сотрудников реализована возможность первичной регистрации в системе образовательного веб-портала.

Рассмотрим пошагово как организована процедура регистрации новых пользователей, условно разделив ее на 2 этапа.

Первый этап регистрации.

) В разделе абитуриент расположена регистрационная форма для абитуриентов, а потенциальный сотрудник может заполнить регистрационную форму на странице работа.

Регистрационная форма представлена на рис. 5.
















Рис. 5. Регистрационная форма


Необходимо заполнить следующие поля:

-Логин- указать желаемый логин;

-Пароль- указать желаемый пароль, который будет впоследствии использоваться для авторизации в системе;

-Повторите пароль- повторить введенный ранее пароль;

-Эл. адрес- указать адрес электронной почты, на который будет отправлено письмо для подтверждения регистрации;

-Код подтверждения- необходимо ввести код подтверждения, указанный на картинке.

После заполнения полей надо нажать кнопку «зарегистрировать».

) После нажатия кнопки запускаются специальные функции для проверки корректности заполнения всех полей формы.

Не допускается ввод пустых значений (то есть нельзя оставлять незаполненные поля).

Происходит проверка правильности введенного адреса электронной почты, в данном случае адрес должен соответствовать заданному шаблону имя@домен.ru(/com/org и т.п).

Длина всех строк для ввода информации в форму ограничена, а также запрещены специальные символы в целях обеспечения безопасности.

Организована проверка соответствия кода подтверждения введенному значению.

) Если все поля формы заполнены корректно, информация о пользователе попадает в базу данных потенциальных пользователей, пользователь определяется в группу «Потенциальных пользователей»

) Происходит автоматическая отправка письма подтверждения регистрации на указанный адрес электронной почты, которое содержит ссылку для активации учетной записи. Письмо представлено на рис. 6.



Рис. 6. Письмо подтверждения регистрации


5) Пользователь, получив письмо для подтверждения регистрации, нажимает ссылку и активирует свою учетную запись.

) После активации учетной записи пользователь получает доступ к своему «Личному кабинету» с ограниченным набором функциональных возможностей, в который он может попасть только после прохождения процедуры аутентификации и авторизации.

На этом завершается первый этап регистрации, алгоритм которого представлен на рис. 7.





















Рис. 7. Алгоритм 1 этапа регистрации новых пользователей


Второй этап регистрации.

) Авторизовавшись в системе, пользователь (абитуриент либо потенциальный сотрудник вуза) должен предоставить подробную информацию о себе, заполнив специальную анкету.

) Дополнительная информация о пользователе попадает в базу данных потенциальных пользователей, а затем проходит проверку в соответствующем подразделении вуза.

) После прохождения проверки, если информация верна, данные о пользователе попадают в базу данных «Реальных пользователей», сюда же попадает информация о сотруднике вуза, который проверял документы и достоверность предоставленной информации.

) В том случае, если абитуриент поступил в СПбГУТ, либо потенциальный сотрудник получил работу в вузе, эти пользователи получают доступ к «Личному кабинету» с полным набором функциональных возможностей.

На этом завершается регистрация нового пользователя в системе.

Алгоритм 2 этапа регистрации новых пользователей представлен на рис. 8.














Рис. 8. Алгоритм 2 этапа регистрации новых пользователей


4.3 Выбор вида авторизации и его реализация


.3.1 Авторизация средствами web-сервера

Авторизация - это процесс подтверждения (проверки) прав пользователей на выполнение некоторых действий.

Для ограничения доступа к некоторым файлам можно использовать встроенные в Web-сервер Apache средства ограничения доступа.

В конфигурационном файле Apache httpd.conf можно указать необходимые параметры:

-AuthName "Private Zone" -название защищенной зоны;

-AuthType Basic - тип;

-AuthUserFile -путь к файлу с паролями.

Этот файл должен быть создан в особом формате, так как пароли в нем хранятся в зашифрованном виде.

После соответствующих настроек при попытке запроса любого ресурса из защищенной папки посетителю будет выдан стандартный запрос логина и пароля, вид которого представлен на рис. 9.


Рис. 9. Запрос на вход в папку


4.3.2 Авторизация с помощью заголовка


В PHP есть команда Header - она позволяет отправить браузеру посетителя, запросившему страницу с содержащим эту команду сценарием, определенную служебную информацию - так называемый "заголовок". Для авторизации нам потребуется заголовок "WWW-Authenticate".

В том случае, если браузер получает заголовок "WWW-Authenticate", то он выдает посетителю стандартное окно для ввода логина и пароля (рис. 9.).

Этот вид авторизации тоже реализуется стандартными средствами web-сервера.

Преимущества 1 и 2 вида авторизации:

-функции ограничения доступа встроены в Web-сервер Apache, поэтому нет необходимости создавать что-то новое;

-высокая степень надежности;

-не задействованы cookies.

Недостатки:

-перенос файлов на другой сервер требует воссоздания .htpassw по новой;

-довольно утомительно осуществлять смену пароля;

-для создания файла с паролями необходимо специальное ПО;

-стандартный вид;

-проверка правильности логина и пароля осуществляется на каждой странице, где требуется авторизованный доступ. Если посетителей на сайте не очень много, то это вполне допустимо, однако при большом числе авторизованных посетителей нагрузка на web-сервер может оказаться немалой.


4.3.3 Авторизация с помощью cookies

Cookie - это файл в специальном формате, который присылается сервером браузеру посетителя сайта, расположенном на этом сервере. Браузер, если он поддерживает cookie (и эта поддержка в нем не отключена), помещает его в особое место и впоследствии отправляет назад на сервер при поступлении от него запроса.можно установить (т.е. прислать на компьютер посетителя) и средствами PHP. Для этого используется команда SetCookie, имеющая параметры:

-имя cookie;

-информация, записанная в cookie;

-время жизни cookie.

Преимущества:

-простота реализации;

-удобство использования.

Недостатки:

-некоторые пользователи ОТКЛЮЧАЮТ cookie;

-проверка правильности логина и пароля осуществляется на каждой странице, поэтому возрастает нагрузка на web-сервер;

-низкая степень надежности.

Во-первых, cookie с этими данными сохраняется на компьютере посетителя, а значит, теоретически может быть с него похищен.

Во-вторых, возможность захода на web-страницу "защищенной зоны" в течение некоторого времени без необходимости ввода логина и пароля может привести и к нежелательным последствиям - если посетитель забудет зайти на страницу выхода, то любой, кто воспользуется его компьютером до истечения срока действия cookie, с точки зрения сервера будет вполне легальным пользователем.


4.3.4 Авторизация с помощью сессий

"Сессия" - несколько абстрактное понятие, означающее нечто вроде "законченного периода работы с сайтом".

С помощью команд "поддержки сессий" PHP можно при заходе посетителя на сайт запоминать какие-либо переменные и потом эти переменные считывать или изменять на других страницах этого сайта. При этом в браузер посетителя передаются не сами эти переменные, а некий пароль, по которому сервер впоследствии этот браузер узнает и восстановит именно те значения переменных, которые были установлены для данного посетителя.

Иными словами - работа механизма сессий в PHP происходит так: Когда посетитель заходит на сайт и для него устанавливаются какие-либо переменные (сам ли он их вводит или, скажем, они берутся из базы данных), то команды начала и регистрации сессии сохраняют эти переменные в определенном месте на самом сервере .

Если у посетителя браузер принимает cookie, то ему высылается cookie (с определенным именем - по умолчанию "PHPSESSID"), содержащий так называемый "идентификатор сессии" , а если нет, то web-сервер автоматически помещает данный идентификатор в переменную PHPSESSID в каждую ссылку на выдаваемых посетителю страницах сайта (естественно, "внутреннюю" - то есть ведущую на другие страницы того же самого сайта, с тем же самым доменным именем). Таким образом, идентификатор передается на сервер при каждом заходе посетителя на какую-либо из страниц сайта, будучи либо взятым из соответствующего cookie, установленного посетителю при открытии сессии, либо из адресной строки ссылки, куда этот идентификатор автоматически помещается web-сервером.

Преимущества:

-проверка правильности логина и пароля осуществляется единожды;

-возможна авторизация и с включенными и с выключенными cookies. Этот метод можно применять при большом числе посетителей.

Недостатки:

-Необходимо применить дополнительные меры безопасности при передаче параметров сессии.

Учитывая описанные достоинства и недостатки всех видов авторизации, оптимальным методом для реализации в работе по созданию системы доступа для Web-портала СпбГУТ будет авторизация с помощью сессий, так как при большом числе посетителей этот метод более приемлем за счет того, что проверка логина/пароля происходит единожды, а следовательно не будет перегрузки сервера, а также за счет независимости от cookies возможен охват большего числа посетителей. Этот метод отличается простотой, удобством использования и достаточно высокой степенью надежности, что является решающим аргументом в его пользу.


.3.5 Реализация алгоритма авторизации

Рассмотрим как реализован алгоритм авторизации в рамках данной работы.

На главной странице портала расположен блок авторизации, содержащий поля для ввода логина и пароля, представленный на рис. 10.











Рис. 10. Главная страница портала с блоком авторизации

Блок авторизации выглядит, как представлено на рис. 11.









Рис. 11. Блок авторизации


Для прохождения процедуры авторизации, необходимо ввести логин и пароль и нажать кнопку «Войти».

После нажатия кнопки запускается механизм аутентификации.


4.4 Применение механизма аутентификации


Аутентификация - проверка принадлежности субъекту доступа предъявленного им идентификатора <#"justify">·логин не является "реальным" идентификатором пользователя в том смысле, что связь между человеком и идентификатором очень условна;

·пароли подбираются/взламываются.

Другой подход к проблеме аутентификации предлагают системы сертификатов, основанные на криптографии с открытым ключом. Эти системы позволяют не только проверить право входа, но и связать идентификатор с объектом реального мира. Однако и у них есть недостатки:

·необходимость наличия в инфраструктуре средств генерации/выдачи сертификатов (PKI);

·необходимость хранения в тайне секретного ключа из пары (его утечка требует немедленной смены ключей и сертификатов, поскольку его невозможно сменить, как обычный пароль). Вывод: наиболее приемлемой для системы доступа веб-портала является система аутентификации с использованием логина и пароля, поскольку она является более распространенной, проверенной временем, простой с точки зрения реализации, не требующей дополнительных ресурсов, необходимых для ее организации и обеспечения безопасности.

Механизм аутентификации сравнивает значения логина и пароля, введенные пользователем со значениями, хранящимися в базе данных «Реальных пользователей», и при совпадении значений происходит запуск механизма управления сессиями и скрипта распределения прав доступа пользователей к ИР веб-портала, и происходит вход пользователя в систему.

4.5 Реализация распределения прав доступа пользователей к информационным ресурсам веб-портала


В программном коде с помощью специальных алгоритмов, разделяющих пользователей на группы, определены группы пользователей, а также сформированы привилегии доступа к ресурсам, которые хранятся в специальном файле, и созданы необходимые ресурсы.

Рассмотрим алгоритм выполнения скрипта распределения прав доступа.

. Поиск соответствия по таблицам БД пользователей портала.

Производится поиск соответствия введенных значения логина и пароля значениям, которые хранятся в базе данных.

. Определение группы пользователя в соответствии с принадлежностью найденной записи таблице БД.

Например, если пользователь найден в таблице «Методисты», то он относится к группе «Методист»

. Формирование списка доступных ресурсов (страниц, функций)

На данном шаге формируется список всех доступных для данного пользователя ресурсов.

. Формирование уникального набора функций «Личного кабинета» пользователя.

Для каждого пользователя, в зависимости от его прав доступа к ИР и информационных потребностей формируется свой уникальный набор функций.

. Делегирование привилегий доступа к ресурсам.

На данном шаге происходит предоставление пользователю определенной степени доступа к ресурсам веб-портала.

Если рассмотреть общую последовательность выполнения всех механизмов, при прохождении процедуры авторизации, можно определить на каком из этапов этого алгоритма происходит запуск скрипта распределения прав доступа.

Схематично эта последовательность показана на рисунке.

Наследование позволяет одному объекту приобретать свойства другого объекта.

Благодаря механизму наследования прав доступа портал обладает простой, эффективной и гибкой системой для разграничения прав доступа большого количества пользователей и предоставления каждому из них своего персонального виртуального рабочего места в портале с уникальным набором прав.

Таким образом, делегирование прав доступа происходит после выполнения механизмов аутентификации, управления сессиями на завершающем этапе процедуры авторизации.



















Рис. Общая последовательность выполнения применяемых в системе механизмов, скриптов во время прохождения процедуры авторизации.


.6 Функции «Личного кабинета»


Функции «Личного кабинета» представляют собой запросы к базе данных на ввод, вывод информации.

Все сходные функции, предоставляемые пользователям, объединены в группы:

.Личные функции

.Групповые функции

.Общие функции

Личные функции- это запросы к базе данных, которые оперируют только личной информацией данного конкретного пользователя. Примером функции, относящейся к группе личных функций является «Просмотр личных сообщений» и т.п.

К групповым функциям относятся запросы, которые необходимы всем пользователям определенной группы. Например, групповыми функциями для всех пользователей группы «Методист» будут:

§«Просмотр личных дел учащихся»

§«Учет посещаемости»

§«Ход выполнения приказов»

К группе общих относятся функции, доступные всем пользователям.

Примером такой функции может служить «Библиотека».

Все функции «Личного кабинета» представляют собой ресурсы веб-портала.


5. ОБЕСПЕЧЕНИЕ БЕЗОПАСНОСТИ НФОРМАЦИОННЫХ РЕСУРСОВ


.1 Методы защиты информации


Существует 3 метода защиты информации:

) Физический

Данный метод заключается в ограничении физического доступа к серверу портала

) Административный

Данный метод заключается в регламентировании порядка взаимодействия пользователей с системой, правил использования ресурсов ИС и т.д.

) Программный

Представляет собой меры обеспечения защиты информации реализуемые в программном коде соответствующей ИС.

Физический и административный методы защиты информации выходят за рамки работы.

В данной работе применен программный метод защиты информации.


.2 Программные меры защиты информации, реализованные в разработанной системе доступа


Защита информации в модуле системы доступа организована исходя из основных принципов защиты информации:

·Экономическая эффективность.

Стоимость средств, защиты и их эксплуатации должна быть ниже, чем размеры возможного ущерба.

·Минимум привилегий.

Каждый пользователь должен иметь минимальный набор привилегий, необходимый для работы.

·Простота.

Система защиты тем более эффективна, чем проще с ней работать.

·Отключаемость защиты.

При нормальном функционировании ИС система защиты не должна отключаться. Ее может отключить только сотрудник со специальными полномочиями и только в особых случаях.

·Открытость проектирования и функционировании механизмов защиты. Специалисты, имеющие отношение к системе защиты, должны полностью представлять себе принципы ее функционирования и в случае возникновения затруднительных ситуаций адекватно на них реагировать.

·Всеобщий контроль.

Любые исключения из множества контролируемых объектов и субъектов защиты снижают уровень защиты ИС.

·Независимость системы защиты от субъектов защиты.

Лица, занимавшиеся разработкой системы защиты не должны быть среди тех, кого будет контролировать эта система защиты.

·Отчетность и подконтрольность.

Система защиты должна предоставлять доказательства корректности своей работы.

·Ответственность.

Подразумевается личная ответственность лиц, занимающихся обеспечением информационной безопасности.

·Изоляция и разделение.

Объекты защиты целесообразно разделять на группы таким образом, чтобы нарушение защиты в одной из групп не влияло на безопасность других групп.

·Полнота и согласованность.

Надежная система защиты должна быть полностью специфицирована, протестирована и согласована.

·Параметризация.

Защита становится наиболее эффективной и гибкой, если допускает изменение своих параметров со стороны администратора безопасности.

·Принцип враждебного окружения.

Система защиты должна проектироваться в расчете на враждебное окружение. Разработчики должны исходить из предположения, что пользователи имеют наихудшие намерения, что они будут совершать серьезные ошибки как законные пользователи и высокопрофессиональные действия как потенциальные нарушители. Необходимо предполагать, что они обладают достаточной квалификацией, чтобы найти пути обхода система защиты, если таковые будут иметься.

·Привлечение человека.

Наиболее важные и критические решения должны приниматься человеком.

При разработке системы доступа были реализованы следующие меры защиты ИР:

üПрименяется паролирование «Личных кабинетов» пользователей системы

üПароли по сети передаются только в зашифрованном виде.

üИспользуется алгоритм шифрования SHA1

üИспользуется механизм аутентификации пользователей

üПрименяется механизм управления сессиями

В программном коде созданы специальные функции проверки вводимой пользователем информации.

Запрещен ввод специальных символов

Ограничена длина строк для ввода информации

Проверка переменной окружения веб-сервера

üРеализована защита от автоматических регистраций, которая позволяет предотвратить заполнение базы данных ненужной информацией

üДоступ к «Личному кабинету» возможен одновременно только с одного IP -адреса

üПри разработке использовалось ПО, которое соответствует промышленным стандартам


5.3 Алгоритм шифрования паролей SHA1


Для шифрования паролей используется алгоритм шифрования SHA1.Hash Algorithm 1 - алгоритм криптографического хеширования. Описан в RFC 3174. Для входного сообщения произвольной длины (максимум 264 ? 1 бит, что равно 2 эксабайта) алгоритм генерирует

-битное хеш-значение, называемое также дайджестом сообщения. Используется во многих криптографических приложениях и протоколах. Также рекомендован в качестве основного для государственных учреждений в США. Принципы, положенные в основу SHA-1, аналогичны тем, которые использовались Рональдом Ривестом при проектировании MD4.

Описание алгоритма.реализует хеш-функцию, построенную на идее функции сжатия. Входами функции сжатия являются блок сообщения длиной 512 бит и выход предыдущего блока сообщения. Выход представляет собой значение всех хеш-блоков до этого момента. Иными словами хеш блока Mi равен

= f(Mi,hi ? 1).


Хеш-значением всего сообщения является выход последнего блока.


Рис. Одна итерация алгоритма SHA1


Инициализация.

Исходное сообщение разбивается на блоки по 512 бит в каждом. Последний блок дополняется до длины, кратной 512 бит. Сначала добавляется 1 а потом нули, чтобы длина блока стала равной (512 - 64 = 448) бит. В оставшиеся 64 бита записывается длина исходного сообщения в битах.

Если последний блок имеет длину более 448, но менее 512 бит, дополнение выполняется следующим образом: сначала добавляется 1, затем нули вплоть до конца 512-битного блока; после этого создается ещё один 512-битный блок, который заполняется вплоть до 448 бит нулями, после чего в оставшиеся 64 бита записывается длина исходного сообщения в битах. Дополнение последнего блока осуществляется всегда, даже если сообщение уже имеет нужную длину.

Инициализируются пять 32-битовых переменных.

Криптоанализ.

Криптоанализ хеш-функций направлен на исследование уязвимости к различного вида атакам. Основные из них:

нахождение коллизий - ситуация, когда двум различным исходным сообщениям соответствует одно и то же хеш-значение.

нахождение прообраза - исходного сообщения - по его хешу.

При решении методом «грубой силы»:

вторая задача требует 2160 операций.

первая же требует в среднем 2160/2 = 280 операций

От устойчивости хеш-функции к нахождению коллизий зависит безопасность электронной цифровой подписи с использованием данного хеш-алгоритма. От устойчивости к нахождению прообраза зависит безопасность хранения хешей паролей для целей аутентификации.

В январе 2005 года Vincent Rijmen и Elisabeth Oswald опубликовали сообщение об атаке на усеченную версию SHA-1 (53 раунда вместо 80), которая позволяет находить коллизии меньше, чем за 280 операций.

В феврале 2005 года Сяоюнь Ван, Йицунь Лиза Йинь и Хунбо Ю представили атаку на полноценный SHA-1, которая требует менее 269 операций.

Данный алгоритм шифрования, по оценкам специалистов, обладает высокой степенью надежности и рекомендован для обеспечения высокого уровня безопасности передаваемой информации, поэтому было принято решение использовать этот алгоритм шифрования при передаче паролей от пользователя к системе сервера.


5.4 Применение CAPTCHA


CAPTCHA (от англ. «Completely Automated Public Turing test to tell Computers and Humans Apart» - полностью автоматизированный публичный тест Тьюринга для различия компьютеров и людей) - компьютерный тест, используемый для того, чтобы определить, кем является пользователь системы: человеком или компьютером.

В Интернете среди русскоязычных пользователей часто транскрибируется как капча.

Термин появился в 2000 году. Основная идея теста: предложить пользователю такую задачу, которую может решить человек, но которую несоизмеримо сложно предоставить для решения компьютеру. В основном это задачи на распознавание символов.

Применяются CAPTCHA для того, чтобы предотвратить множественные автоматические регистрации и отправления сообщений программами-роботами.

В модуле системы доступа на странице регистрации новых пользователей применяется captcha, которая представляет собой рисунок в искажённом виде, содержащий цифровой код, который необходимо ввести в поле «Код подтверждения».

После ввода этого кода происходит проверка правильности введенного значения кода подтверждения и если значение верно, то регистрация учитывается сервером и информация о пользователе попадает а базу данных.

Captca, применяемая при регистрации новых пользователей выглядит следующим образом:










Рис. Вид Captca (кода подтверждения)

В данном случае код подтверждения равен 616574




















Применение этого компьютерного теста защищает созданную информационную систему от автоматических регистраций и позволяет предотвратить заполнение базы данных ненужной информацией


ЗАКЛЮЧЕНИЕ


Результатом работы является полностью завершенный модуль системы доступа к ресурсам веб-портала СПбГУТ, представляющий собой совокупность механизмов распределения прав доступа к информационным ресурсам вуза и предусматривающий возможность регистрации новых пользователей, прохождения механизма аутентификации и авторизации зарегистрированных пользователей в системе, создание групп пользователей и объединение пользователей в группы, обеспечивающий достаточный уровень безопасности информационных ресурсов веб-портала.

Разработанный модуль обеспечивает необходимый уровень доступа пользователей к информационным ресурсам и входит в состав образовательного веб-портала СПбГУТ , который должен стать инструментом повседневной деятельности студентов и сотрудников СПбГУТ, а также предоставлять определенную информацию для любых посетителей веб-портала.

Разработка снабжена предельно полной документацией и комментариями к программному коду, что дает возможность дальнейшей модернизации системы в зависимости от потребностей вуза и новых условий, развития и наращивания системы, а также исключает зависимость от конкретного разработчика системы.

Гибкость системы заключается в возможности подключения неограниченного числа модулей к существующей системе, возможности создания бесконечного количества новых групп пользователей с неограниченным количеством пользователей и предоставления каждому из пользователей своего уникального набора прав доступа к информационным ресурсам веб-портала.


ПРИЛОЖЕНИЯ


Приложение 1. Системные требования


Требования к серверному программному обеспечению.

Для корректной работы системы требуется следующее программное обеспечение:

·операционная система семейства Windows или Unix или MacOS;

·Apache v. 2.2 или выше;

·PHP v. 5.0 или выше;

·MySQL v. 5.0 или выше;

·ZendFramework 1.10 или выше/

Требования к клиентскому программному обеспечению.

Для корректной работы разработанной системы пользователю требуется:

·Доступ в Интернет

·Браузер


Приложение 2. Список файлов


Название папкиНазвание файлаВыполняемые функцииСтрwwwauth. phpвыполняет авторизацию зарегистрированных польз.76AUTHform.htmlформа авторизации зарегистрированных польз.92DB_users.phpсоздает БД REG и таблицу USERS77config.inc.phpфайл конфигурации с данными для MySQL79functions.inc.phpфайл с функциями (проверка/ отправка почты)80gut_acl.phpСкрипт распределения прав доступа80output_login.phpСкрипт для вывода логина авторизованного пользователя в «Личном кабинете»89output_users.phpВывод информации о зарегистрированных пользователях из БД REG (DB_users.php)89REGform.htmlформа регистрации пользователей92Registration.phpосуществляет регистрацию пользователей86www/imgcapcha.phpорганизация кода подтверждения91Addict.ttfфайл шрифтов-1.jpegКартинка для кода подтверждения-2.jpegКартинка для кода подтверждения-3.jpegКартинка для кода подтверждения-www/tpldefault.phpШаблон92Название папкиНазвание файлаВыполняемые функцииСтрwww/real_usersR_auth. phpвыполняет авторизацию зарегистированных польз.93R_AUTHform.htmlформа авторизации зарегистированных польз.-university8.phpсоздает БД учета успеваемости-config.inc.phpфайл конфигурации с данными для MySQL-R_gut_acl.phpСкрипт распределения прав доступа96sem_show.phpВывод данных о логинах/паролях пользователей из БД university8 (учета успеваемости)-R_output_loginСкрипт для вывода логина авторизованного пользователя группы «Реальных пользователей» в «Личном кабинете»95www/ real_users/tpldefault.phpШаблон-www/ real_users/resoursesredakt_ocenki_metodist.phpРесурс редактирования оценок, доступный для подгруппы «Методист»-obzor_ocenki_prep.phpРесурс просмотра оценок группы, доступный для подгруппы «Преподаватель»-ocenki_stud.phpРесурс просмотра оценок, доступный для подгруппы «Студент»-www/ /libraryAcl.php Role.php+Resource.php и др.Библиотека классов ZendFramework-

Листинг скрипта auth. php:

<?php

// Инициализируем начало сессии_start();

//Поключаем файл конфигурации("config.inc.php");

//Подключаемся к БД

$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)

or die("Не могу подключиться" );

// сделать $DB текущей базой данных_select_db($DB, $link) or die ('Не могу выбрать БД');

//Если нет сессий(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID'])

{

//Если кнопка не нажата, отображаем форму(!$_POST['do']){

//Вывод ФОРМЫ авторизации("AUTHform.html");

}

//Если кнопка нажата

if($_POST['do']) {

//Проверяем данные

$login = $_POST['login'];

$upass = $_POST['password'];($login !='' AND $upass !='') {

//Создаем запрос

$q1=mysql_query("SELECT * FROM users WHERE nick='".$login."' AND password='".md5($upass)."' AND status=1");

//Проверяем существует ли хоть одна запись

if(mysql_num_rows($q1)===1) {

//Если есть, то создаем сессии и перенаправляем на эту страницу

$r=mysql_fetch_array($q1);

$_SESSION['user'] = $r['nick'];

$_SESSION['password'] = $r['password'];

$_SESSION['SID'] = md5(crypt($r['nick'],$r['password']));

//скрипт РАСПРЕДЕЛЕНИЯ ПРАВ ДОСТУПА("gut_acl.php");

//скрипт для вывода логина авторизованного пользователя+ кнопки управления

include("output_login.php");

@Header("Location: auth.php");

}{echo 'Неверный логин/пароль; Возможно Ваш аккаунт не активирован';}

}{echo 'Введите данные';}

}

}{

скрипт для вывода логина авторизованного пользователя+ кнопки управления("output_login.php");

блок для вывода шаблонов страниц портала

if($_GET['page'] !='') {

@include("tpl/".$_GET['page'].".php");

}{ @include("tpl/default.php");}

}($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link); @Header("Location: auth.php");}

?>

Листинг скрипта DB_users.php:

<html>

<head>

<title>Create DataBase</title>

<meta charset=Windows-1251">

</head>

<body>

<?php

// Подключаемся к MySQL("SERVER", "localhost");("USERNAME", "root");("PASSWORD", "");

$link = mysql_connect (SERVER, USERNAME, PASSWORD);( !$link ) die ("Couldn't connect to MySQL");

// Создаем базу данных REG

$DB= mysql_query('CREATE DATABASE if not exists REG');(!$DB)

{("<br><b>Ошибка! Не удалось создать базу данных</b> %s", mysql_error()."<br>");

}

{"<br><b> База данных создана успешно</b><br>";

}

//Сделаем REG текущей базой данных

$registr = mysql_select_db('REG', $link);

if (!$registr)

{("<br><b>База данных недоступна</b> %s", mysql_error()."<br>");

}

{"<br><b>Соединение с базой данных установлено</b><br>";

}

// Создаем таблицу users

$DB_t1 = mysql_query('CREATE TABLE users

( id INT( 6 ) NOT NULL AUTO_INCREMENT PRIMARY KEY,VARCHAR( 30 ) NOT NULL,VARCHAR( 50 ) NOT NULL,VARCHAR( 50 ) NOT NULL,_id VARCHAR( 50 ) NOT NULL,INT( 1 ) NOT NULL,_date INT( 8 ) NOT NULL,INT( 8 ) NOT NULL )

');(!$DB_t1)

{("<br><b>Не удалось создать таблицу users</b> %s", mysql_error()."<br>");

}

{"<br><b>Таблица users создана успешно </b><br>";

}

//Завершаем работу с БД(!mysql_close($link))

{"<br><b>Не удалось завершить соединение с базой данных</b><br>";

}

{"<br><b>Соединение с базой данных завершено успешно</b><br>";

}

?>

</body>

</html>

Листинг скрипта config.inc.php:

<?php

//Файл конфигурации с данными для MySQL:

//Сервер

$DBSERVER = "localhost";

//Пользователь

$DBUSER = "root";

// Пароль

$DBPASS = "";

//База данных

$DB = "REG";

?>

Листинг скрипта functions.inc.php:

<?php

// Файл с функциями

//Функция проверки корректности введенного e-mail'а

function checkmail($mail) {

// удаляем крайние пробелы

$mail=trim($mail);

// если пусто - выход

if (strlen($mail)==0) return -1;(!preg_match("/^[a-z0-9_-]{1,20}+(\.){0,2}+([a-z0-9_-]){0,5}@(([a-z0-9-]+\.)+(com|net|org|mil|".

"edu|gov|arpa|info|biz|inc|name|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-".

"9]{1,3}\.[0-9]{1,3})$/is",$mail))-1;$mail;

}

//Функция отправки почтыsendmail($mail,$subject,$message,$headers) {(mail($mail,$subject,$message,$headers))

{ return TRUE;}{return FALSE;}

}

?>

Листинг скрипта gut_acl.php:

<?php

// Путь к файлам с классами Zend'а

set_include_path('library');

// Подключаем необходимые классы_once 'Zend/Acl.php';_once 'Zend/Acl/Role.php';_once 'Zend/Acl/Resource.php';

// Создание списка контроля доступа ACL (объект Zend_Acl)

$acl = new Zend_Acl();

// ДОБАВЛЕНИЕ ПОЛЬЗОВАТЕЛЕЙ(РОЛЕЙ)

// Выполним добавление ГРУПП пользователей

//ГРУППА действующих(реальных) пользователей

$acl->addRole(new Zend_Acl_Role('users_group'))

//Подгруппа учащиеся=group_std

>addRole(new Zend_Acl_Role('group_std'), 'users_group')

//Подгруппа сотрудники=group_sotrud

>addRole(new Zend_Acl_Role('group_sotrud'),'users_group');

//ГРУППА возможных(потенциальных) пользователей

$acl->addRole(new Zend_Acl_Role('pt_users_group'))

//подгруппа потенциальные учащиеся=pt_group_std

->addRole(new Zend_Acl_Role('pt_group_std'), 'pt_users_group')

//подгруппа потенциальные сотрудники=pt_group_sotrud

->addRole(new Zend_Acl_Role('pt_group_sotrud'), 'pt_users_group');

// Добавление пользователей без наследования прав

// пользователь ГОСТЬ

$acl->addRole(new Zend_Acl_Role('guest'))

// АДМИНИСТРАТОР web-портала

>addRole(new Zend_Acl_Role('admin'))

// Добавление ПОДГРУПП пользователей с наследованием прав от 3-х категорий

//Подгруппы действующих(реальных) пользователей:

//Подгруппа группы сотрудники МЕТОДИСТ=metodist

->addRole(new Zend_Acl_Role('metodist'),array('guest','users_group', 'group_sotrud' ))

//Подгруппа группы сотрудники преподаватель=prepodavatel

>addRole(new Zend_Acl_Role('prepodavatel'), array('guest','users_group', 'group_sotrud' ))

//Подгруппа группы сотрудники администрация(административная должность)=administration

->addRole(new Zend_Acl_Role('administration'), array('guest','users_group', 'group_sotrud' ))

//Подгруппа группы учащиеся СТУДЕНТ=student

>addRole(new Zend_Acl_Role('student'),array('guest','users_group', 'group_std' ))

//Подгруппа группы учащиеся АСПИРАНТ=aspirant

>addRole(new Zend_Acl_Role('aspirant'), array('guest','users_group', 'group_std' ))

//Подгруппа группы учащиеся РОДИТЕЛИ=roditeli :-)

->addRole(new Zend_Acl_Role('roditeli'), array('guest','users_group', 'group_std' ))

//Подгруппы возможных(потенциальных) пользователей (аналогично предыдущему блоку)

->addRole(new Zend_Acl_Role('pt_metodist'),array('guest','pt_users_group', 'pt_group_sotrud' ))

>addRole(new Zend_Acl_Role('pt_prepodavatel'), array('guest','pt_users_group', 'pt_group_sotrud' ))

>addRole(new Zend_Acl_Role('pt_administration'), array('guest','pt_users_group', 'pt_group_sotrud' ))

>addRole(new Zend_Acl_Role('pt_student'),array('guest','pt_users_group', 'pt_group_std' ))

>addRole(new Zend_Acl_Role('pt_aspirant'), array('guest','pt_users_group', 'pt_group_std' ))

>addRole(new Zend_Acl_Role('pt_roditeli'), array('guest','pt_users_group', 'pt_group_std' ));

// ДОБАВЛЕНИЕ РЕСУРСОВ

// defaultModule- МОДУЛЬ ПО УМОЛЧАНИЮ

$acl->add(new Zend_Acl_Resource('defaultModule'));

// UserController (общие функции)

$acl->add(new Zend_Acl_Resource('UserController'), 'defaultModule');

$acl->add(new Zend_Acl_Resource('registerAction'), 'UserController');

$acl->add(new Zend_Acl_Resource('loginAction') , 'UserController');

$acl->add(new Zend_Acl_Resource('logoutAction') , 'UserController');

// SiteController (страницы-разделы портала)

$acl->add(new Zend_Acl_Resource('SiteController'), 'defaultModule');

$acl->add(new Zend_Acl_Resource('news') , 'SiteController');

$acl->add(new Zend_Acl_Resource('about') , 'SiteController');

$acl->add(new Zend_Acl_Resource('history') , 'SiteController');

$acl->add(new Zend_Acl_Resource('structure'), 'SiteController');

$acl->add(new Zend_Acl_Resource('documrnts'), 'SiteController');

$acl->add(new Zend_Acl_Resource('education'), 'SiteController');

// UzoneController (личные кабинеты)

$acl->add(new Zend_Acl_Resource('UzoneController'), 'defaultModule');

$acl->add(new Zend_Acl_Resource('cabinet'), 'UzoneController');

// uchet_uspevModule- МОДУЛЬ УЧЕТА УСПЕВАЕМОСТИ

$acl->add(new Zend_Acl_Resource('uchet_uspevModule'));

// SpecController (должностные функции)

$acl->add(new Zend_Acl_Resource('SpecController'), 'uchet_uspevModule');

$acl->add(new Zend_Acl_Resource('redakt_ocenki_metodist') , 'SpecController');

$acl->add(new Zend_Acl_Resource('obzor_ocenki_prep') , 'SpecController');

$acl->add(new Zend_Acl_Resource('ocenki_stud') , 'SpecController');

//РАСПРЕДЕЛЕНИЕ РОЛЕЙ

$role='guest';(isset($_SESSION['SID']) )

{

//**подключить БД REG (в которой хранится таблица users- возможных(потенциальных) пользователей)

$db_REG=mysql_select_db('REG', $link) or die ('Can\'t use REG : ' . mysql_error());(!$db_REG)

{("<br><b>Database REG connection error!</b> %s", mysql_error()."<br>");

}

{"<br><b>Database POTENTIAL_USERS(=REG) online</b><br>";

}

$q00 = @mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['user']."' AND password='".$_SESSION['password']."'");(@mysql_num_rows($q00)==1)

{$role='pt_users_group';'Группа: ', $role, '<br />';}

}

//УСТАНОВКА ПРАВ ДОСТУПА К РЕСУРСАМ

// Разрешаем администратору портала все действия

$acl->allow('admin');

//Права доступа для гостя

// Разрешаем доступ к контроллеру UserController пользователю guest(гость)

$acl->allow('guest', 'UserController');

// Разрешаем доступ к контроллеру SiteController пользователю guest(гость)

$acl->allow('guest', 'SiteController');

// Запрещаем доступ к контроллеру UzoneController пользователю guest(гость)

$acl->deny('guest', 'UzoneController');

// Запрещаем доступ к контроллеру SpecController пользователю guest(гость)

$acl->deny('guest', 'SpecController');

//Права доступа для подгруппы УЧАЩИЕСЯ

// Разрешаем доступ к контроллеру UserController группе group_std(учащиеся)

$acl->allow('group_std', 'UserController');

// Разрешаем доступ к контроллеру SiteController группе group_std(учащиеся)

$acl->allow('group_std', 'SiteController');

// Разрешаем доступ к контроллеру UzoneController группе group_std(учащиеся)

$acl->allow('group_std', 'UzoneController');

// Запрещаем доступ к контроллеру SpecController группе group_std(учащиеся)

$acl->deny('group_std', 'SpecController');

//Права доступа для подгруппы СОТРУДНИКИ

// Разрешаем доступ к модулю 'defaultModule' группе group_sotrud(сотрудники)

$acl->allow('group_sotrud', 'defaultModule');

// Разрешаем доступ к контроллеру UzoneController группе group_sotrud(сотрудники)

$acl->allow('group_sotrud', 'UzoneController');

// Разрешаем доступ к ресурсу redakt_ocenki_metodist контроллера SpecController подгруппе metodist

$acl->allow('metodist', 'redakt_ocenki_metodist');

// Разрешаем доступ к ресурсу obzor_ocenki_prep контроллера SpecController подгруппе prepodavatel

$acl->allow('prepodavatel', 'obzor_ocenki_prep');

// Разрешаем доступ к ресурсу ocenki_stud контроллера SpecController подгруппе student

$acl->allow('student', 'ocenki_stud');

//ПРОВЕРКА ПРАВ ДОСТУПА'ACCESS CONTROL LIST:', '<br />';'Access to defaultModule for admin ', $acl->isAllowed('admin', 'defaultModule') ? "allowed" : "denied", '<br />';'Access to UserController for guest ', $acl->isAllowed('guest', 'UserController' ) ? "allowed" : "denied", '<br />';'Access to UzoneController for guest ',$acl->isAllowed('guest', 'UzoneController' ) ? "allowed" : "denied", '<br />';'Access to SpecController for group_std ',$acl->isAllowed('group_std','SpecController') ? "allowed" : "denied", '<br />';'Access to SpecController for group_sotrud ', $acl->isAllowed('group_sotrud','SpecController') ? "allowed" : "denied", '<br />';'Access to redakt_ocenki_metodist for metodist ', $acl->isAllowed('metodist','redakt_ocenki_metodist') ? "allowed" : "denied", '<br />';'Access to obzor_ocenki_prep for prepodavatel ', $acl->isAllowed('prepodavatel','obzor_ocenki_prep') ? "allowed" : "denied", '<br />';'Access to ocenki_stud for student ', $acl->isAllowed('student','ocenki_stud') ? "allowed" : "denied", '<br />';

//Вывод ресурсов($acl->isAllowed($role, 'redakt_ocenki_metodist')) {

// код для вывода ссылки на ресурс

echo '<br/><br/><a href="resourses/redakt_ocenki_metodist.php">редактировать оценки</a>';

}($acl->isAllowed($role, 'obzor_ocenki_prep')) {

// код для вывода ссылки на ресурс

echo '<br/><br/><a href="resourses/obzor_ocenki_prep.php">просмотр успеваемости</a>';

}($acl->isAllowed($role, 'ocenki_stud')) {

// код для вывода ссылки на ресурс

echo '<br/><br/><a href="resourses/ocenki_stud.php">просмотр оценок</a>';

}

?>

Листинг скрипта registration.php:

<?php

// Инициализируем начало сессии_start();

// Подключаем файл конфигурации и файл функций

include("config.inc.php");("functions.inc.php");

// Подключаемся к БД

$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)

or die("Не могу подключиться" );

// Делаем $DB текущей базой данных_select_db($DB, $link) or die ('Не могу выбрать БД');

if(!$_POST['do'] OR $_POST['do'] =='') {

// Генерируем шестизначный код для capcha(капчи)

if($_SESSION['uid'] =='') { $_SESSION['uid'] = mt_rand(100000,999999); }

//Вывод ФОРМЫ("REGform.html");

}

//Если данные отправлены($_POST['do'] !='') {

//Начинаем проверять входящие данные($_POST['sid'] == $_SESSION['uid']) {

//Создаем запрос к базе для проверки существования Пользователя

$nick= $_POST['nick'];_query("SELECT * FROM users WHERE nick='".strtolower($nick)."'");

//Проверка результата запроса(mysql_affected_rows()==0) {

//Проверка введенных паролей($_POST['pass'] !='' AND $_POST['rpass'] !='' AND $_POST['pass'] === $_POST['rpass']){

//Проверяем адрес электронной почты(checkmail($_POST['mail']) !== -1) {

//Осуществляем регистарацию

//Генерируем uniq_id

$uniq_id = md5($_SERVER['REMOTE_ADDR'].$_SERVER['HTTP_USER_AGENT'].mktime());

$pass = $_POST['pass'];

$email = $_POST['mail'];

//Создаем запрос для записи данных в БД

$r = @mysql_query("INSERT INTO users VALUES(NULL,'".strtolower($nick)."','".md5($pass)."','".$email."','".$uniq_id."',0,'".date("dmY")."','".date("dmY")."')");

//После запроса отправляем письмо пользователю, для активации аккаунта($r) {

// Для отправки e-mail в виде HTML устанавливаем необходимый mime-тип и кодировку

$headers = 'MIME-Version: 1.0' . "\r\n";

$headers .= 'Content-type: text/html; charset=windows-1251' . "\r\n";

// Откуда пришло

$headers .= 'From:Сайт %sitename%' . "\r\n";

//Здесь указать e-mail, куда будут уходить сообщения

$mailto = $email;

$subject = "Подтверждение регистарции на веб-портале СпбГУТ";

$message = 'Для активации аккаунта пройдите по следующей ссылке

<a href="#"justify">$message .= 'или скопируйте ссылку в окно ввода адреса браузера и нажмите Enter.';

//Отправляем сообщение(sendmail($mailto,$subject,$message,$headers) !== FALSE) {'Регистрация завершена, на введеный Вами e-mail было отправлено сообщение для активации аккаунта';

}{echo 'Регистрация невозможна: Повторите запрос позднее';}

}{echo 'Регистрация невозможна: Повторите запрос позднее';}

}{echo 'Регистрация невозможна: Электронный адрес должен соответствовать шаблону <b>[email protected]</b><br/><a href="registration.php"/>назад</a>';}

}{echo 'Регистрация невозможна: Введенные пароли не совпадают<br/><a href="registration.php"/>назад</a>';}

}{ echo 'Регистрация невозможна: Пользователь с таким именем уже существует<br/><a href="registration.php"/>назад</a>';}_destroy();

}{ echo 'Регистрация невозможна: код подтверждения введен не верно<br/><a href="registration.php"/>назад</a>';}

}

//Активация аккаунта($_GET['activation'] AND $_GET['activation']!='') {

$uniq_id = $_GET['activation'];

//Создаем запрос

$r=@mysql_query("UPDATE users SET status=1 WHERE uniq_id='".$uniq_id."' AND status=0");($r) {echo '<h2>Ваша учетная запись активирована.</h2><br/> Теперь вы можете <a href="auth.php">войти на сайт</a> используя данные

указанные при регистрации';}{echo 'Активация невозможна: профиль уже активирован';}

}

?>

Листинг скрипта output_login.php:

<?php

$q2 = @mysql_query("SELECT * FROM users WHERE nick='".$_SESSION['user']."' AND password='".$_SESSION['password']."' AND status=1");(@mysql_num_rows($q2)==1){

$r2 = @mysql_fetch_array($q2);'Вы: '.ucfirst($r2['nick']).'<br/>';'<a href="auth.php">главная</a> ';'<br/><a href="auth.php?exit=1">выход</a>';

}

?>

Листинг скрипта output_users.php:

<html>

<head>

<title>output info table USERS</title>

<meta charset=Windows-1251">

</head>

<body>

<?php

// Подключаемся к MySQL("SERVER", "localhost");("USERNAME", "root");("PASSWORD", "");

$link = mysql_connect (SERVER, USERNAME, PASSWORD);( !$link ) die ("Couldn't connect to MySQL");

//Сделаем REG текущей базой данных

$registr = mysql_select_db('REG', $link);(!$registr)

{("<br><b>База данных не доступна</b> %s", mysql_error()."<br>");

}

{"<br><b>База данных создана успешно</b><br>";

}

// Выбираем значения из таблицы users

$query = "SELECT id,nick,password,email,uniq_id,status, last_date,date FROM users";

//Проверяем наличие информации

$db1_1 = mysql_query($query);

if (!$db1_1)

{("<br><b>Нет данных</b> %s", mysql_error()."<br><br>");

}

{"<br><b>Данные найдены</b><br><br>";

}

//Формируем цикл для последовательного вывода данных

$z1 = mysql_num_rows($db1_1);

for ($i = 0; $i < $z1; $i = $i + 1)

{

// Обрабатываем ряд результата запроса и возвращаем ассоциативный массив

$r1 = mysql_fetch_assoc($db1_1);

//Вывод данных"<br>"."<b>Users #".$i."</b><br><br>";"id: "."<b>".$r1["id"]."</b>"."<br>";"nick: "."<b>".$r1["nick"]."</b>"."<br>";"password: "."<b>".$r1["password"].""."</b>"."<br>";"email "."<b>".$r1["email"]."</b>"."<br>";"uniq_id "."<b>".$r1["uniq_id"]."</b>"."<br>";"status "."<b>".$r1["status"]."</b>"."<br>";"last_date "."<b>".$r1["last_date"]."</b>"."<br>";"date "."<b>".$r1["date"]."</b>"."<br>";

}

//Завершаем работу с БД(!mysql_close($link))

{"<br><br><b> Не удалось завершить соединение с базой данных</b><br>";

}

{"<br><br><b>Соединение с базой данных завершено успешно</b><br>";

}

?>

</body>

</html>

Листинг скрипта capcha.php:

<?php

//Инициализируем начало сессии_start();

//Создаем изображение из 3-х возможных вариантов фона

$im=ImageCreateFromJpeg(round(mt_rand(1,3)).".jpg");

//Генерируем цвет надписи

$color=ImageColorAllocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));

//Формируем надпись, используя шрифт($im, 23, mt_rand(-5,5), 3, 30, $color, "addict.ttf", $_SESSION['uid']);

//Указываем тип содержимого("Content-type: image/jpeg");

//Создаем и выводим изображение($im);

//Разрушаем изображение($im);

?>

Листинг формы AUTHform.html

<html>

<head>

<title>Авторизация</title>

</head>

<body>

<a href="registration.php">регистрация</a> <br/><br/>

<form name="1" action="" method="post">

<input name="login" type="text" value=""> <br/>

<input name="password" type="password" value=""> <br/>

<input name="do" type="submit" value="Войти">

</form>

</body>

</html>

Листинг формы REGform.html

<html>

<head>

<title>Регистрация</title>

</head>

<body>

<form action="" method="POST">

Логин: <input name="nick" type="text" value=""><br/>

Пароль: <input name="pass" type="password" value=""><br/>

Повторите пароль: <input name="rpass" type="password" value=""><br/>

Эл.адрес: <input name="mail" type="text" value="[email protected]"><br/>

<img src="img/capcha.php?sid='.$_SESSION['uid'].'"/> <br/>

<input name="sid" type="text" value=""><br/><br/>

<input name="do" type="submit" value="зарегистрировать">

</form>

</body>

</html>

Листинг скрипта default.php:

<?php'ШАБЛОН.php';

?>

Листинг скрипта R_auth.php:

<?php

// Инициализируем начало сессии_start();

//Поключаем файл конфигурации("R_config.inc.php");

//Подключаемся к БД

$link = mysql_connect($DBSERVER, $DBUSER, $DBPASS)

or die("Не могу подключиться" );

// сделать $DB текущей базой данных_select_db($DB, $link) or die ('Не могу выбрать БД');

//Если нет сессий(md5(crypt($_SESSION['user'],$_SESSION['password'])) != $_SESSION['SID'])

{

//Если кнопка не нажата, отображаем форму(!$_POST['do']){

//Вывод ФОРМЫ авторизации("R_AUTHform.html");

}

//Если кнопка нажата

if($_POST['do']) {

//Проверяем данные

$login = $_POST['login'];

$upass = $_POST['password'];($login !='' AND $upass !='') {

//Создаем запрос

$q1=mysql_query("SELECT * FROM students WHERE students_nick='".$login."' AND students_password='".$upass."' ");// добавить AND status=1 если будет проверка документов

$q2=mysql_query("SELECT * FROM teachers WHERE teachers_nick='".$login."' AND teachers_password='".$upass."' ");// добавить AND status=1 если будет проверка документов

$q3=mysql_query("SELECT * FROM metodist WHERE metodist_nick='".$login."' AND metodist_password='".$upass."' ");// добавить AND status=1 если будет проверка документов

//Проверяем существует ли хоть одна запись

if(mysql_num_rows($q1)===1 OR mysql_num_rows($q2)===1 OR mysql_num_rows($q3)===1) {(mysql_num_rows($q1)===1) {$zzz1=TRUE; echo 'НАЙДЕНА запись в табл студент','<br />';}(mysql_num_rows($q2)===1) {$zzz2=TRUE; echo 'НАЙДЕНА запись в табл преподаватель','<br />';}(mysql_num_rows($q3)===1) {$zzz3=TRUE; echo 'НАЙДЕНА запись в табл методист','<br />';}

//Если есть, то создаем сессии, запускаем скрипт прав доступа и перенаправляем на страницу

if ($zzz1)

{$r=mysql_fetch_array($q1);

$_SESSION['user'] = $r['students_nick'];

$_SESSION['password'] = $r['students_password'];

$_SESSION['SID'] = md5(crypt($r['students_nick'],$r['students_password']));

echo 'создана сессия для студента';

}($zzz2)

{$r=mysql_fetch_array($q2);

$_SESSION['user'] = $r['teachers_nick'];

$_SESSION['password'] = $r['teachers_password'];

$_SESSION['SID'] = md5(crypt($r['teachers_nick'],$r['teachers_password']));

echo 'создана сессия для преп';

}($zzz3)

{$r=mysql_fetch_array($q3);

$_SESSION['user'] = $r['metodist_nick'];

$_SESSION['password'] = $r['metodist_password'];

$_SESSION['SID'] = md5(crypt($r['metodist_nick'],$r['metodist_password']));

echo 'создана сессия для методиста';

}

//срипт РАСПРЕДЕЛЕНИЯ ПРАВ ДОСТУПА("R_gut_acl.php");

//скрипт для вывода логина авторизованного пользователя+ кнопки управления

include("R_output_login.php");

// указать страницу личного кабинета

@Header("Location: R_auth.php");

}{echo 'Неверный логин/пароль; Повторите попытку авторизации';}

}{echo 'Введите данные';}

}

}{

//блок для вывода шаблонов страниц портала

//if($_GET['page'] !='') {

// @include("tpl/".$_GET['page'].".php");

// }

//else { @include("tpl/default.php");}

//скрипт для вывода логина авторизованного пользователя+ кнопки управления

include("R_output_login.php");

}($_GET['exit']) {@session_destroy(); unset($_GET['exit']); mysql_close($link); @Header("Location: R_auth.php");}

?>

Листинг скрипта R_output_login.php:

<?php

// Блок для вывода логина авторизованного пользователя( ВЫ: логин)

$qx1=mysql_query("SELECT * FROM students WHERE students_nick='".$login."' AND students_password='".$upass."' ");// добавить AND status=1 если будет проверка документов

$qx2=mysql_query("SELECT * FROM teachers WHERE teachers_nick='".$login."' AND teachers_password='".$upass."' ");// добавить AND status=1 если будет проверка документов

$qx3=mysql_query("SELECT * FROM metodist WHERE metodist_nick='".$login."' AND metodist_password='".$upass."' ");// добавить AND status=1 если будет проверка документов

if(mysql_num_rows($qx1)===1 OR mysql_num_rows($qx2)===1 OR mysql_num_rows($qx3)===1)

{(mysql_num_rows($qx1)===1) $zzzx1=TRUE;(mysql_num_rows($qx2)===1) $zzzx2=TRUE;(mysql_num_rows($qx3)===1) $zzzx3=TRUE;($zzz1) {$r2=mysql_fetch_array($qx1); $nick='students_nick';}($zzz2) {$r2=mysql_fetch_array($qx2); $nick='teachers_nick';}($zzz3) {$r2=mysql_fetch_array($qx3); $nick='metodist_nick';}'Вы: '.ucfirst($r2[$nick]).'<br/>';'<a href="R_auth.php">Главная</a>','<br/>';'<br/><a href="R_auth.php?exit=1">Выход</a>';

}

Листинг скрипта R_gut_acl.php:

<?php

// Путь к файлам с классами Zend'а

set_include_path('library');

// Подключаем необходимые классы_once 'Zend/Acl.php';_once 'Zend/Acl/Role.php';_once 'Zend/Acl/Resource.php';

// Создание списка контроля доступа ACL (объект Zend_Acl)

$acl = new Zend_Acl();


// ДОБАВЛЕНИЕ ПОЛЬЗОВАТЕЛЕЙ(РОЛЕЙ)

// Выполним добавление ГРУПП пользователей

//ГРУППА действующих(реальных) пользователей

$acl->addRole(new Zend_Acl_Role('users_group'))

//Подгруппа учащиеся=group_std

>addRole(new Zend_Acl_Role('group_std'), 'users_group')

//Подгруппа сотрудники=group_sotrud

>addRole(new Zend_Acl_Role('group_sotrud'),'users_group');

//ГРУППА возможных(потенциальных) пользователей

$acl->addRole(new Zend_Acl_Role('pt_users_group'))

//подгруппа потенциальные учащиеся=pt_group_std

->addRole(new Zend_Acl_Role('pt_group_std'), 'pt_users_group')

//подгруппа потенциальные сотрудники=pt_group_sotrud

->addRole(new Zend_Acl_Role('pt_group_sotrud'), 'pt_users_group');

// Добавление пользователей без наследования прав

// пользователь ГОСТЬ

$acl->addRole(new Zend_Acl_Role('guest'))

// АДМИНИСТРАТОР web-портала

>addRole(new Zend_Acl_Role('admin'))

// Добавление ПОДГРУПП пользователей с наследованием прав от 3-х категорий

//Подгруппы действующих(реальных) пользователей:

//Подгруппа группы сотрудники МЕТОДИСТ=metodist

->addRole(new Zend_Acl_Role('metodist'),array('guest','users_group', 'group_sotrud' ))

//Подгруппа группы сотрудники преподаватель=prepodavatel

>addRole(new Zend_Acl_Role('prepodavatel'), array('guest','users_group', 'group_sotrud' ))

//Подгруппа группы сотрудники администрация(административная должность)=administration

->addRole(new Zend_Acl_Role('administration'), array('guest','users_group', 'group_sotrud' ))

//Подгруппа группы учащиеся СТУДЕНТ=student

>addRole(new Zend_Acl_Role('student'),array('guest','users_group', 'group_std' ))

//Подгруппа группы учащиеся АСПИРАНТ=aspirant

>addRole(new Zend_Acl_Role('aspirant'), array('guest','users_group', 'group_std' ))

//Подгруппа группы учащиеся РОДИТЕЛИ=roditeli :-)

->addRole(new Zend_Acl_Role('roditeli'), array('guest','users_group', 'group_std' ))

//Подгруппы возможных(потенциальных) пользователей (аналогично предыдущему блоку)

->addRole(new Zend_Acl_Role('pt_metodist'),array('guest','pt_users_group', 'pt_group_sotrud' ))

>addRole(new Zend_Acl_Role('pt_prepodavatel'), array('guest','pt_users_group', 'pt_group_sotrud' ))

>addRole(new Zend_Acl_Role('pt_administration'), array('guest','pt_users_group', 'pt_group_sotrud' ))

>addRole(new Zend_Acl_Role('pt_student'),array('guest','pt_users_group', 'pt_group_std' ))

>addRole(new Zend_Acl_Role('pt_aspirant'), array('guest','pt_users_group', 'pt_group_std' ))

>addRole(new Zend_Acl_Role('pt_roditeli'), array('guest','pt_users_group', 'pt_group_std' ));

// ДОБАВЛЕНИЕ РЕСУРСОВ

// defaultModule- МОДУЛЬ ПО УМОЛЧАНИЮ

$acl->add(new Zend_Acl_Resource('defaultModule'));

// UserController (общие функции)

$acl->add(new Zend_Acl_Resource('UserController'), 'defaultModule');

$acl->add(new Zend_Acl_Resource('registerAction'), 'UserController');

$acl->add(new Zend_Acl_Resource('loginAction') , 'UserController');

$acl->add(new Zend_Acl_Resource('logoutAction') , 'UserController');

// SiteController (страницы-разделы портала)

$acl->add(new Zend_Acl_Resource('SiteController'), 'defaultModule');

$acl->add(new Zend_Acl_Resource('news') , 'SiteController');

$acl->add(new Zend_Acl_Resource('about') , 'SiteController');

$acl->add(new Zend_Acl_Resource('history') , 'SiteController');

$acl->add(new Zend_Acl_Resource('structure'), 'SiteController');

$acl->add(new Zend_Acl_Resource('documrnts'), 'SiteController');

$acl->add(new Zend_Acl_Resource('education'), 'SiteController');

// UzoneController (личные кабинеты)

$acl->add(new Zend_Acl_Resource('UzoneController'), 'defaultModule');

$acl->add(new Zend_Acl_Resource('cabinet'), 'UzoneController');

// uchet_uspevModule- МОДУЛЬ УЧЕТА УСПЕВАЕМОСТИ

$acl->add(new Zend_Acl_Resource('uchet_uspevModule'));

// SpecController (должностные функции)

$acl->add(new Zend_Acl_Resource('SpecController'), 'uchet_uspevModule');

$acl->add(new Zend_Acl_Resource('redakt_ocenki_metodist') , 'SpecController');

$acl->add(new Zend_Acl_Resource('obzor_ocenki_prep') , 'SpecController');

$acl->add(new Zend_Acl_Resource('ocenki_stud') , 'SpecController');

//РАСПРЕДЕЛЕНИЕ РОЛЕЙ

$role='guest';(isset($_SESSION['SID']) )

{

//**подключить БД учета успев (в которой хранятся таблицы действующих(реальных) пользователей)

$db_uni=mysql_select_db('university8', $link) or die ('Can\'t use university : ' . mysql_error());(!$db_uni)

{("<br><b>Database УЧЕТ_УСПЕВАЕМОСТИ connection error!</b> %s", mysql_error()."<br>");

}

{"<br><b>Database university online</b><br>";

}

$q01 = @mysql_query("SELECT * FROM metodist WHERE metodist_nick='".$_SESSION['user']."'AND metodist_password='".$_SESSION['password']."' ");(@mysql_num_rows($q01)==1)

{$role='metodist';echo 'Группа: ',$role, '<br />';}{

$q02 = @mysql_query("SELECT * FROM students WHERE students_nick='".$_SESSION['user']."' AND students_password='".$_SESSION['password']."'");(@mysql_num_rows($q02)==1) {$role='student';echo 'Группа: ',$role, '<br />';}{

$q03 = @mysql_query("SELECT * FROM teachers WHERE teachers_nick='".$_SESSION['user']."' AND teachers_password='".$_SESSION['password']."'");(@mysql_num_rows($q03)==1) {$role='prepodavatel';echo'Группа: ', $role, '<br />';}{

$q04 = @mysql_query("SELECT * FROM administration WHERE administration_nick='".$_SESSION['user']."' AND administration_password='".$_SESSION['password']."'");(@mysql_num_rows($q04)==1) {$role='administration';echo'Группа: ', $role, '<br />';}{

$q05 = @mysql_query("SELECT * FROM aspirants WHERE aspirants_nick='".$_SESSION['user']."' AND aspirants_password='".$_SESSION['password']."'");(@mysql_num_rows($q05)==1) {$role='aspirant';echo'Группа: ', $role, '<br />';}{

$q06 = @mysql_query("SELECT * FROM roditeli WHERE roditeli_nick='".$_SESSION['user']."' AND roditeli_password='".$_SESSION['password']."'");(@mysql_num_rows($q06)==1) {$role='roditeli';echo'Группа: ', $role, '<br />';}

}

}

}

}

}

}


//УСТАНОВКА ПРАВ ДОСТУПА К РЕСУРСАМ

// Разрешаем администратору портала все действия

$acl->allow('admin');

//Права доступа для гостя

// Разрешаем доступ к контроллеру UserController пользователю guest(гость)

$acl->allow('guest', 'UserController');

// Разрешаем доступ к контроллеру SiteController пользователю guest(гость)

$acl->allow('guest', 'SiteController');

// Запрещаем доступ к контроллеру UzoneController пользователю guest(гость)

$acl->deny('guest', 'UzoneController');

// Запрещаем доступ к контроллеру SpecController пользователю guest(гость)

$acl->deny('guest', 'SpecController');

//Права доступа для подгруппы УЧАЩИЕСЯ

// Разрешаем доступ к контроллеру UserController группе group_std(учащиеся)

$acl->allow('group_std', 'UserController');

// Разрешаем доступ к контроллеру SiteController группе group_std(учащиеся)

$acl->allow('group_std', 'SiteController');

// Разрешаем доступ к контроллеру UzoneController группе group_std(учащиеся)

$acl->allow('group_std', 'UzoneController');

// Запрещаем доступ к контроллеру SpecController группе group_std(учащиеся)

$acl->deny('group_std', 'SpecController');

//Права доступа для подгруппы СОТРУДНИКИ

// Разрешаем доступ к модулю 'defaultModule' группе group_sotrud(сотрудники)

$acl->allow('group_sotrud', 'defaultModule');

// Разрешаем доступ к контроллеру UzoneController группе group_sotrud(сотрудники)

$acl->allow('group_sotrud', 'UzoneController');

// Разрешаем доступ к ресурсу redakt_ocenki_metodist контроллера SpecController подгруппе metodist

$acl->allow('metodist', 'redakt_ocenki_metodist');

// Разрешаем доступ к ресурсу obzor_ocenki_prep контроллера SpecController подгруппе prepodavatel

$acl->allow('prepodavatel', 'obzor_ocenki_prep');

// Разрешаем доступ к ресурсу ocenki_stud контроллера SpecController подгруппе student

$acl->allow('student', 'ocenki_stud');

//ПРОВЕРКА ПРАВ ДОСТУПА'ACCESS CONTROL LIST:','<br />';'Access to defaultModule for admin ', $acl->isAllowed('admin', 'defaultModule') ? "allowed" : "denied", '<br />';'Access to UserController for guest ', $acl->isAllowed('guest', 'UserController' ) ? "allowed" : "denied", '<br />';'Access to UzoneController for guest ',$acl->isAllowed('guest', 'UzoneController' ) ? "allowed" : "denied", '<br />';'Access to SpecController for group_std ',$acl->isAllowed('group_std','SpecController') ? "allowed" : "denied", '<br />';'Access to SpecController for group_sotrud ', $acl->isAllowed('group_sotrud','SpecController') ? "allowed" : "denied", '<br />';'Access to redakt_ocenki_metodist for metodist ', $acl->isAllowed('metodist','redakt_ocenki_metodist') ? "allowed" : "denied", '<br />';'Access to obzor_ocenki_prep for prepodavatel ', $acl->isAllowed('prepodavatel','obzor_ocenki_prep') ? "allowed" : "denied", '<br />';'Access to ocenki_stud for student ', $acl->isAllowed('student','ocenki_stud') ? "allowed" : "denied", '<br />';

//Вывод ресурсов($acl->isAllowed($role, 'redakt_ocenki_metodist')) {

// код для вывода ссылки на ресурс

echo '<br/><br/><a href="resourses/redakt_ocenki_metodist.php">редактировать оценки</a><br/><br/>';

}($acl->isAllowed($role, 'obzor_ocenki_prep')) {

// код для вывода ссылки на ресурс

echo '<br/><br/><a href="resourses/obzor_ocenki_prep.php">просмотр успеваемости</a><br/><br/>';

}($acl->isAllowed($role, 'ocenki_stud')) {

// код для вывода ссылки на ресурс

echo '<br/><br/><a href="resourses/ocenki_stud.php">просмотр оценок</a><br/><br/>';

}

?>

В этой главе были представлены основные фрагменты кода системы. Приводить тут полный код программы не представляется возможным, из-за его огромного объема.

Полный код приложения можно посмотреть на прилагаемом диске.


Дипломная работа на тему «Разработка системы доступа к ресурсам образовательного веб-портала вуз

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ