Студопедия — Лекция № 11
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Лекция № 11

10.1. Проблемы безопасности, связанные с cookie. [7.1.1]
10.2. Безопасная настройка PHP. [7.1.1]

 

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

Определение Cookies - это текстовые строки, хранящиеся на стороне клиента, и содержащие пары "имя-значение", с которыми связан URL, по которому броузер определяет нужно ли посылать cookies на сервер.

Установка cookies

Установка cookies производится с помощью функции setcookie:

setcookie

Синтаксис:

bool setcookie (string name [, string value [, int expire [, string path

[, string domain [, int secure]]]]])

Эта функция имеет следующие аргументы:

name - имя устанавливаемого cookie;

value - значение, хранящееся в cookie с именем $name;

expire - время в секундах с начала эпохи, по истечение которого текущий cookie становится недейтвительным;

path - путь, по которому доступен cookie;

domain - домен, из которого доступен cookie;

secure - директива, определяющая, доступен ли cookie не по запросу HTPPS. По умолчанию эта директива имеет значение 0, что означает возможность доступа к cookie по обычному запросу HTTP.

Пример простого приложения с cookies

Давайте создадим простой сценарий, подсчитывающий при помощи cookies количество обращений посетителя к странице.

В cookie с именем counter будет храниться число посещений страницы пользователем:

<?

$counter++;

setcookie("counter",$counter);

echo("Вы посетили эту страницу $counter раз");

?>

Результат выполнения сценария на рис.:

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

Рассмотрим этот вопрос подробнее, для чего модифицируем код, приведенный в листинге, поместив перед установкой cookie текст:

Если здесь поместить текст, то возникнет ошибка, так как

будет послан заголовок Content-type: text/html.

<?

$counter++;

setcookie("counter",$counter);

echo("Вы посетили эту страницу $counter раз");

?>

Как видно из рис., при выполнении этого сценария выводится сообщение об ошибке:

Заметим, что в этих листингах мы обращаемся к переменной $counter, в которой хранится значение cookie, как к глобальной, что требует наличия включенной директивыregister_globals. Если эта директива отключена, то значение, хранящееся в cookie можно получить через глобальный массив $_COOKIE["name"]:

<?

$_COOKIE['counter']++;

setcookie("counter",$_COOKIE['counter']);

echo 'Вы посетили эту страницу '.$_COOKIE['counter'].' раз';

?>

Поскольку некоторые пользователи отключают cookie в настройках своих браузеров, для корректной работы, в приложение, использующее cookies, необходимо помещать код, проверяющий включены ли cookies у посетителя, и, если нет, то сообщающий ему о необходимости включить cookie:

<?

if(!$cookie)

{

/* посылаем заголовок переадресации на страницу,

с которой будет предпринята попытка установить cookie */

header("Location: $PHP_SELF?cookie=1");

/* устанавливаем cookie с именем "test" */

setcookie("test","1");

}

else

{

if(!$test)

{

echo("Для корректной работы приложения необходимо включить cookies");

}

else

{

/* cookie включены, переходим на нужную страницу */

header("Location: http://localhost/test1.php");

}

}

?>

Установка срока годности cookies

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

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

time

Синтаксис:

time();

Усовершенствованным вариантом функции time является функция mktime:

mktime

Синтаксис:

int mktime ([int hour [, int minute [, int second [, int month [, int

day [, int year [, int is_dst]]]]]]])

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

-1 (По умолчанию. Означает, что свойство не задано);

0 (Временной интервал не приходится на период летнего времени);

1 (Временной интервал приходится на период летнего времени).

Примеры установки сроки годности cookies:

<?

/* этот cookie действителен в течение 10 мин после создания */

setcookie("name", $value, time() + 600);

/* действие этого cookie прекращается в полночь 25 января 2010 года */

setcookie("name", $value, mktime(0,0,0,01,25,2010));

/* действие этого cookie прекращается в 18.00 25 января 2010 года */

setcookie("name", $value, mktime(18,0,0,01,25,2010));

?>

Удаление cookie

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

setcookie("name");

Другие установленные cookie при этом не удаляются.

Проблемы безопасности, связанные с cookies

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

установка области видимости cookies;

шифрование;

ограничение доступа для доменов;

отправка cookies по защищенному запросу.

Наилучшим решением является комплексное применение всех этих способов.

Установка области видимости cookie

Поскольку, по умолчанию, доступ к cookie происходит из корневого каталога, это может создать "дыры" в системе защиты, так как cookies становятся доступными в любом подкаталоге этого каталога. Ограничить доступ к cookies для всех страниц, кроме расположенных в конкретном каталоге, к примеру, /web, можно следующим образом:

setcookie("name", $value, "/web/");

Однако и в этом случае, к примеру, каталоги /web/index.php, /web1/page.html и т. д. будут удовлетворять этому ограничению. Если такое положение также является нежелательным, можно ограничить область видимости cookies до конкретной страницы:

setcookie("name", $value, "/web/index.php");

Однако и такой способ в полной мере не решает проблему, так как в этом случае доступ к информации, содержащейся в cookie, может получить, к примеру, скрипт /web/index.php-script/anti_cookie.php. Поэтому появляется необходимость в шифровании.

Шифрование

Применить шифрование к cookies можно разными способами, рассмотрим один из них:

<?

// создаем вектор начального состояния для шифрования

$vector = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_CAST_256,

MCRYPT_MODE_CFB), MCRYPT_RAND);

$key = "qwe233jk312jx813893xk312"; // ключ для расшифрования

$cook_name = "maks";

$cipher = mcrypt_encrypt(MCRYPT_CAST_256, $key, $cook_name,

MCRYPT_MODE_CFB, $vector);

setcookie("username", $cipher, "/decrypt.php");

?>

Как видно из листинга 10.13, расшифровка cookie проводится при помощи скрипта decrypt.php, код которого приведен ниже:

<?

// вектор начального состояния остается неизменным

$vector = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_CAST_256,

MCRYPT_MODE_CFB), MCRYPT_RAND);

$key = "qwe233jk312jx813893xk312";

$decrypt_name = mcrypt_ decrypt(MCRYPT_CAST_256, $key, $username,

MCRYPT_MODE_CFB, $vector);

echo("$decrypt_name, мы рады видеть вас на нашей страничке!");

?>

Ограничение доступа для доменов

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

setcookie("name", $value, "/web/index.php", ".server.com");

При таком ограничении заданной области видимости будут соответствовать домены с именами server.com, myservser.com, php.server.com и т. д., поскольку проверка на допустимость области видимости домена осуществляется по принципу концевого соответствия.

Отправка cookies по защищенному запросу

Не является излишним для cookie, хранящему секретные данные, разрешить отвечать только на защищенные запросы HTTP, так как в этом случае значительно затрудняется перехват данных, которыми обмениваются клиент и сервер. Для обеспечения защищенного соединения, функции setcookie передается шестой параметр со значением, равным 1:

setcookie("name", $value, time() + 600, "/web/", ".server.com", 1);

Настройка безопасности php.ini

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

PHP disable_functions

Директива disable_functions используется для отключения не нужных функций. С ее помощью можно отключить такие функции как shell_exec и phpinfo, на которые в первую очередь и нацелены злоумышленники при первичном анализе сайта.

disable_functions = show_source, system, shell_exec, passthru, exec, phpinfo, popen, proc_open

PHP open_basedir

Данная директива php.ini позволяет или запрещает открывать определенные файлы вашего каталога. Например, можно ограничить доступ к каталогу администратора:

open_basedir = /home/users/you/public_html/admin/

PHP magic_quotes_gpc

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

magic_quotes_gpc = 1

PHP safe_mode

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

safe_mode = 0

PHP register_globals

Одна из самых неудобных директив созданных разработчиками, которая регистрирует все глобальные переменные GET, POST, COOKIE. Ее отключение является обязательным. Более подробно об это написано тут.

register_globals = 0

PHP allow_url_fopen

Отключите allow_url_fopen, так как эта директива позволяет получить доступ через URL к некоторым объектам, например, файлам. По умолчанию оболочки предназначены для доступа к удаленным файлам с помощью FTP или HTTP-протоколов. Некоторые расширения, такая, как Zlib, может использовать дополнительные оболочки.

allow_url_fopen = 0

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

 

Лекция № 11

11.1. Система администрирования контента. [7.1.1]
11.2. Основные принципы работы с каталогами. [7.1.1]
11.3. Система полнотекстового поиска по сайту. [7.1.1]

 

Систе́ма управле́ния содержи́мым (конте́нтом) (англ. Content management system, CMS) — информационная система или компьютерная программа, используемая для обеспечения и организации совместного процесса создания, редактирования и управления контентом(то есть содержимым).

  • Основные функции CMS:
  • Предоставление инструментов для создания содержимого, организация совместной работы над содержимым,
  • Управление содержимым: хранение, контроль версий, соблюдение режима доступа, управление потоком документов и т. п.,
  • Публикация содержимого,
  • Представление информации в виде, удобном для навигации, поиска.

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

В общем случае системы управления содержимым делятся на:

Систему управления содержания масштаба предприятия (англ. Enterprise Content Management System системы управления содержанием предприятий)

Система управления веб-содержимым (англ. Web Content Management System)

В силу того, что ECMS имеют глубокую внутреннюю классификацию по предметным областям (HRM, DMS, CRM, ERP и т. д.), термин CMS заместил собой WCMS, превратившись в синоним системы управления сайтами. Подобные CMS позволяют управлять текстовым и графическим наполнением веб-сайта, предоставляя пользователю интерфейс для работы с содержимым сайта, удобные инструменты хранения и публикации информации, автоматизируя процессы размещения информации в базах данных и её выдачи в HTML.

Существует множество готовых систем управления содержимым сайта, в том числе и бесплатных. Их можно разделить на три типа по способу работы:

Генерация страниц по запросу. Системы такого типа работают на основе связки «Модуль редактирования → База данных → Модуль представления». Модуль представления генерирует страницу с содержанием при запросе на него, на основе информации из базы данных. Информация в базе данных изменяется с помощью модуля редактирования. Страницы заново создаются сервером при каждом запросе, что в свою очередь создаёт дополнительную нагрузку на системные ресурсы. Нагрузка может быть многократно снижена при использовании средств кэширования, которые имеются в современных веб-серверах.

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

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

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

Термин контент-менеджер обозначает род профессиональной деятельности — редактор сайта.

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

Словосочетание «система управления контентом» сегодня у всех на слуху. Рынок подобных продуктов растет, но до сих пор в данной области нет единых стандартов, в том числе, и на терминологию. Что же представляют собой подобные системы и какую функциональность они обеспечивают?

Рынок систем категории CMS (content management system) достаточно бурно развивается, но единых стандартов в этой области, в том числе на терминологию, еще нет. Английское слово content означает «нечто, содержащееся внутри» и применительно к письменным работам обычно входит в словосочетание table of contents — содержание, перечень разделов (скажем, книги). Отличительная черта контента состоит в том, что он конструируется из отдельных кусочков. Однако при переводе термина content на русский язык произошел забавный казус. Дело в том, что английский вариант этого слова означает «содержание» только в тех случаях, когда ударение ставится на его первый слог. В противном же случае (а мы обычно так и произносим) слово content является глаголом со значением «удовлетворять».

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

История управления контентом началась с управления документами в традиционном смысле этого слова, т.е. текстовыми файлами. По мере развития понятия «документ», системы управления документами стали называть системами управления контентом. Почему? Считается, что это позволяет подчеркнуть способность таких систем управлять информацией независимо от формы ее представления, а также отделить информацию-контент от документа-формы. Однако абстрактно управлять информацией невозможно — она обязательно должна быть представлена в какой-либо форме. Пытаясь управлять контентом, мы неизбежно приходим к управлению документами. Системы управления контентом, действительно, «научились» разделять управление документами (хранение, изменение и т.п.) и их представление конечному пользователю. Но они все-таки управляют документами в какой-то форме, а не информацией.

Само понятие «управление контентом» первоначально прочно ассоциировалось с процессом публикации и обновления информации на Web-сайтах — требовалась технология, позволяющая следить за ее актуальностью. Поэтому в качестве синонима content management часто используют термин Web content management. Применительно к организациям, оперирующим огромным количеством информации, уместно говорить уже о системах управления информационными ресурсами предприятия (enterprise content management, ECM). В результате термин content management расширился: им стали обозначать управление не только информацией на сайте, но и всеми разрозненными и разнообразными фрагментами корпоративной информации. Есть и другие определения. Скажем, в энциклопедии Wikipedia системой управления контентом названа система, применяемая для организации и упрощения совместного создания содержимого.

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

Создание — предоставление авторам удобных и привычных средств создания контента.

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

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

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

CMS-системы управляют небольшими взаимосвязанными единицами информации, и в данном контексте документ приобретает смысл гипертекста. Поскольку CMS-системы управляют информацией, а у информации есть свой жизненный цикл, то, естественно, эти системы должны иметь адекватные средства управления контентом на каждом из этапов его жизни (создание, модификация, публикация, передача в архив и т.д.). В этом смысле CMS можно рассматривать как часть комплекса ILM (information lifecycle management).

Среди CMS-систем часто выделяют так называемые каркасы (content management framework, CMF) — инструментарии для создания системы. Как уже говорилось, естественным расширением CMS стали ECM-системы, которые управляют всей разрозненной информацией предприятия, взаимодействуя с другими приложениями, такими как ERP и CRM. Пожалуй, наиболее известный производитель ECM-систем — компания Documentum. Разработкой систем управления контентом занимаются многие компании, в том числе IBM, Microsoft, Oracle, Macromedia. В последнее время начали появляться организации, пытающиеся объединить разработчиков CMS, создать единую информационную среду для потенциальных пользователей подобных систем, продвигать и утверждать единые стандарты. Прежде всего, это ассоциации OSCOM (Open Source Content Management) и CMSWatch.

OSCOM утвердила такие стандарты, как WebDav, RSS, ATOM и JSR-170. Один из ее интересных проектов, CMSML, предусматривает создание основанного на XML языка для описания систем управления контентом, списка свойств CMS, словаря для их описания и соответствующих имен для каждого свойства в XML-разметке. Свойства разделены на три больших класса — создание, управление и доставка контента конечному пользователю.

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

В этой статье мы будем придерживаться классификации, основанной на модели представления данных — объектной, сетевой или модульной.

Объектная модель

Объектная модель представления данных оперирует такими понятиями, как класс и объект. Классы определяют структуру данных и представляют собой набор атрибутов (текстовая строка, целое число, изображение и т.д.). Представители класса (объекты) имеют определенную структуру и могут содержать другие объекты, образуя произвольную иерархическую структуру. Объекты могут наследовать свойства, содержание и поведение объектов, которые в них содержатся. Примерами объектов служат документы, картинки, папки и учетные записи пользователей. Класс контента не хранит в себе реальных данных — такую информацию содержат объекты (экземпляры класса). Определив один класс, можно создать множество его представителей (контент объектов).

В CMS-системах данные обычно хранятся в реляционной или объектной базе данных. В первом случае объектная модель данных отображается на реляционную модель базы данных. Связи между объектами создаются, например, с помощью таблиц вида id, from_object, from_object_version, to_object. На рис. 1 приведена возможная структура класса «Статья» и его представителя.

Рис. 1. Пример организации контента с помощью объектной модели данных

Среди объектно-ориентированных CMS-систем можно встретить каркасы. Классический пример — Zope CMF. Вообще, Zope — ведущий свободно распространяемый сервер приложений, специализирующийся на управлении контентом в порталах и пользовательских приложениях. Zope позволяет совместно работать над созданием и управлением динамических Web-ориентированных бизнес-приложений. На основе этого сервера приложений построен каркас управления контентом Zope CMF, с помощью которого, в свою очередь, создан целый ряд CMS-систем, в частности, Plone.

Еще одна очень распространенная CMS этого класса — eZ Publish. Ее относят и к каркасам, и к ECM. Системы семейства eZ базируются на свободно распространяемом продукте eZ Publish. Наличие двух лицензий — GPL и профессиональной — позволяет создавать коммерческие продукты на основе каркаса eZ Publish, обеспечивая этой системе поддержку как сообщества Open Source, так и профессиональных разработчиков.

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

Microsoft Content Management Server (MCMS) представляет собой систему управления Web-контентом, которая дает возможность создавать, развертывать и поддерживать динамично меняющиеся Web-сайты. Благодаря тесной интеграции с Visual Studio.NET и поддержке функций управления исходными кодами, MCMS позволяет разработчикам создавать сайты, которые потом могут управляться и поддерживаться как ИТ-специалистами, так и бизнес-пользователями. Первые могут централизованно управлять брэндингом, рабочим потоком документов и безопасностью, тогда как вторые — создавать собственный контент, управлять им и публиковать его, используя знакомые приложения, такие как Word или Internet Explorer.

Объектная модель поддерживает разработку в среде Visual Studio.Net и.Net Framework. Возможно объединение через Microsoft Solutions for Internet Business (MSIB) Content Connector с сервером Microsoft Commerce Server для создания решений в области электронной коммерции.

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

Сетевая модель

Данная модель представления данных опирается на теорию графов: структура информации представляется в виде узлов с помеченными связями между ними. Фундаментом системы может служить как сетевая, так и традиционная реляционная СУБД, на которую отображена сетевая модель описания данных. В реляционных таблицах хранится информация об узлах, их атрибутах и связях между ними. Связь отличается от атрибута тем, что в ней хранится ссылка на другой узел, а в атрибуте — собственно значение. Для извлечения данных из направленного графа обычно используются рекурсивные процедуры обработки, такие как составление списков узлов, определение атрибутов узла по атрибутам родителя и др. На рисунке 2 представлен вариант организации структуры данных сайта в виде графа.

Рис. 2. Пример организации контента с помощью сетевой модели данных

Пример системы такого типа — Communiware. Эта система представляет собой инструментарий нового поколения для создания вертикальных Web-сайтов и порталов.

Модульная модель

В подобных системах контент разделен на отдельные модули по типам содержимого. Структура данных зависит от модуля, и вся работа с контентом сосредоточена внутри модуля. Модули независимы и полностью отвечают за работу с документами данного типа. Документы описываются с помощью фиксированного набора характеристик — типы документов строго фиксированы. Расширять функциональность можно за счет добавления нового модуля, замены или редактирования существующего кода. Чаще всего нет никакой системы связей между документами разных модулей и между документами одного и того же модуля. Стандартный набор типов контента (модулей) таков: ссылки, статьи, файлы, новости, разделы, форум.

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

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

Свободно распространяемые CMS-системы

Рассмотрим следующие CMS-системы: eZ Publish 3.2, APC ActionApps, Mambo 4.0.14 и Xoops (версии 2.0.5 и 2.0.6). Каждая из них позиционируется разработчиками как система для создания любого сайта (от корпоративного портала до домашней странички) и управления его содержимым. Система eZ Publish предназначена также для создания и управления содержимым Internet-магазина, новостного сайта, фотогалереи или форума. APC ActionApps имеет уникальное свойство добавления динамических разделов на существующем сайте и способна управлять содержимым многих сайтов. Но все-таки правильнее говорить, что CMS-системы предназначены для создания, модификации, публикации и обмена информацией.

Прежде чем начать использование какой-либо CMS необходимо определиться, с какими типами контента вы хотите работать — будут ли на вашем сайте статьи, фильмы, новости, форумы и т.п. Обычно CMS-системы поставляются с некоторым количеством готовых к работе встроенных типов контента, а часть из них позволяют редактировать встроенные типы контента или создавать новые (eZ Publish, APC ActionApps). Но есть и системы, в которых все типы контента строго фиксированы (Xoops, Mambo).

Каждому пользователю системы должна быть приписана какая-то роль, в соответствии с которой он сможет выполнять определенные действия. При этом, пользователи могут объединяться в различные группы с назначенными правами. Некоторые системы позволяют создавать новые группы и устанавливать им права, отличные от прав существующих групп (eZ Publish, ActionApps, Xoops), и это свойство иногда оказывается очень полезным.

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

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

Основной инструмент создания контента для CMS-систем — Web-браузер. Некоторые системы позволяют использовать также автономного клиента (например, ActionApps) или Windows-клиента. При создании контента важно, насколько прост и интуитивно понятен такой процесс. С этой точки зрения стоит разобраться, какие возможности разметки документов предоставляет конкретный CMS-инструментарий. Нужно выяснить, имеет ли она встроенные, специфичные только для нее, средства разметки или можно пользоваться стандартными средствами типа HTML; создается контент с помощью обычных HTML-форм или встроенных редакторов наподобие WordPad и т.п.

eZ Publish, Mambo и ActionApps предлагают использовать HTML для разметки документов, в то время как Xoops располагает и собственными средствами разметки. Применять для упрощения создания контента встроенный текстовый редактор, похожий на Word Pad, можно лишь в Mambo. Чаще всего документы создаются с помощью средств, привычных для их авторов, и хранятся в виде файлов на локальных машинах, поэтому при внесении документа в систему управления содержимым полезно иметь возможность загрузки файлов с локальной машины. Среди рассматриваемых CMS-систем этим свойством в полной мере не обладает ни одна. В Mambo и ActionApps можно загружать на сервер текстовые файлы и рисунки некоторых форматов, а в Xoops и eZ Publish — только рисунки.

Следующий важный момент — каталогизация и упорядочивание контента. В eZ Publish весь контент сайта представляется в виде дерева узлов (узлы — это инкапсуляции контент-объектов). Упорядочивание контента внутри дерева производится с помощью контейнеров (папок), под которые помещаются соответствующие объекты (как в файловой системе). Для задания местоположения объекта (определения узлов, которые с ним ассоциируются) используется свойство location. С его помощью при создании или редактировании объекта можно определить, где дополнительно будет отображаться объект кроме места его создания. В добавлении к иерархической структуре, дерево контент-узлов может быть разделено на логические разделы (секции).

Для упорядочивания контента в ActionApps используется расширяемая система категорий: в системе изначально имеется набор категорий, а администратор может их изменять или добавлять собственные. Для этого служит специальный встроенный редактор, который позволяет моделировать иерархическую структуру (в категории может быть одна или несколько подкатегорий). В Mambo и Xoops тоже применяются системы категорий, но поскольку эти продукты построены по модульному принципу, наличие или отсутствие системы категорий зависит от модуля. Скажем, для модуля «статьи» существуют категории, а для модуля «форум» — нет. Но какую бы категорию в модуле «статьи» вы ни создали, структура документов в ней будет такой же, как и во всех других категориях данного модуля, — деление на категории чисто смысловое. Если в модуле используется система категорий, можно создавать новые категории, удалять или менять тип доступа для существующих.

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

В eZ Publish и ActionApps реализована поддержка национальных алфавитов. Администраторский интерфейс ActionApps настраивается на несколько языков. Каждая версия контента может существовать на разных языках, но при работе с русским языком порой возникают небольшие проблемы. Дело в том, что в коде этих систем прописана кодировка ISO-8859-1, и для создания документов на русском языке ее приходится менять на KOI8-R или WIN-1251. В системах Mambo и Xoops поддержка русского языка вполне удовлетворительна, но в сами эти системы поддержка многоязычности не входит. В Mambo язык вообще зашит в код системы, а переводы применимы только к тому, что хранится в базе данных, поэтому все равно приходится искать непереведенные фразы и изменять их самостоятельно. Русскоязычному пользователю удобнее работать с Xoops, но надо подготовиться к тому, что с появлением новых, непереведенных, модулей в системе будут возникать слова на английском языке.

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

Реальный контент eZ Publish, который хранится внутри контент-объектов, может существовать в одной или нескольких версиях. Каждый раз, когда контент редактируется, создается его новая версия, а старая остается нетронутой. Эта система версий позволяет пользователям возвращать/отменять изменения, а чтобы предотвратить переполнение базы данных старыми неиспользуемыми версиями, администратор может установить ограничение на количество версий для контент-класса. Собственно версия документа в eZ Publish описывается с помощью следующих характеристик: номер версии, статус документа (черновик, опубликованный, архивный), язык, создатель, дата изменения. Автоматически контролируется авторство документов: нельзя редактировать чужие документы, можно только создавать их копии и редактировать их. Контролируется и статус документа; несколько версий документа нельзя опубликовать одновременно, поскольку статус опубликованной имеет только одна из них. Существует возможность создавать для разных языков разные версии документа. Документы со статусом «архивные» нельзя редактировать и публиковать (для редактирования создается их копия — черновик).

В системе ActionApps поддерживается основной процесс одобрения: автор документа имеет право на его публикацию. Отличие от eZ Publish состоит в том, что документ публикуется сразу после его добавления в систему. При этом статус документа ActionApps может изменяться следующим образом: активный (active), ожидающий рассмотрени




<== предыдущая лекция | следующая лекция ==>
Лекция № 10. Воспаление желчного пузыря | Государственное бюджетное образовательное учреждение

Дата добавления: 2015-03-11; просмотров: 607. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

Плейотропное действие генов. Примеры. Плейотропное действие генов - это зависимость нескольких признаков от одного гена, то есть множественное действие одного гена...

Методика обучения письму и письменной речи на иностранном языке в средней школе. Различают письмо и письменную речь. Письмо – объект овладения графической и орфографической системами иностранного языка для фиксации языкового и речевого материала...

Особенности массовой коммуникации Развитие средств связи и информации привело к возникновению явления массовой коммуникации...

Тема: Изучение приспособленности организмов к среде обитания Цель:выяснить механизм образования приспособлений к среде обитания и их относительный характер, сделать вывод о том, что приспособленность – результат действия естественного отбора...

Тема: Изучение фенотипов местных сортов растений Цель: расширить знания о задачах современной селекции. Оборудование:пакетики семян различных сортов томатов...

Studopedia.info - Студопедия - 2014-2024 год . (0.013 сек.) русская версия | украинская версия