Вы обязательно должны знать такую возможность ColdFusion MX как "безопасность ресурса" (sandbox security). Функция "безопасность ресурса" предлагает особое управление ресурсами (источники данных, файлы, директории, теги, функции и многое другое), с которыми работают шаблоны ColdFusion. Независимо от того, кто вы: разработчик или администратор - вы должны знать все возможности этой функции.
Если вы помните, какие были возможности по обеспечению безопасности в ColdFusion 5 и 4, то вы сразу же заметите, что ColdFusion MX в этом смысле гораздо более легко настраиваем, а также содержить для этого дополнительные возможности.
Следует отметить, что в редакции ColdFusion MX Enterprise эта возможность называется "sandbox security", а в редакции ColdFusion MX Professional - "resource security". Зачастую под этими двумя названиями подразумевается одно и то же, что приводит в некоторое замешательство, т.к. в одних случаях действительно подразумевается одно и то же, а в других случаях - разное.
Ограничение доступа к ресурсам в целях безопасности
Возможность "sandbox/resource security" может быть задействована по желанию и не обязательна к использованию. По-умолчанию после установки ColdFusion MX сервера она отключена.Поскольку код ColdFusion запускается под управлением ColdFusion сервера, то он может иметь доступ к любым ресурсам (с любыми разрешениями), а именно к тем, которые доступны той учетной записи операционной системы, под которой запущен ColdFusion сервер. если вы не включите "sandbox/resource security", то такие теги как, например, <cffile>, <cfcontent> и <cfdirectory> могут иметь доступ к таким файлам и директориям, доступ к которым совсем не желателен. То же самое относится к таким функциям, как GetTempFile, DirectoryExists, FileExists, GetProfileString и SetProfileString.
Более того, некоторые теги ColdFusion могут обладать значительно большей силой. Например, злоупотребление в использовании тегов cfregistry и cfexecute может привести к сбою сервера.Даже если на сервере только одно приложение ColdFusion, все-равно существуют такие нюансы, при которых вам будет нужно контролировать это приложение более строго: ограничить доступ к системному реестру Windows или ограничить количество файлов, к которым могут иметь доступ ColdFusion страницы. В случае же, если ваша компания предоставляет услуги хостинга или имеет корпоративную локальную сеть, то вам также понадобится предотвратить доступ к файлам и директориям, которые принадлежать другим приложениям.
С помощью тегов, которые позволяют управлять источниками данных, возможно, вам понадобиться четко обозначить какие приложение имеют доступ к каким источникам данных. Конечно, обеспечение мер безопасности баз данных - это отдельное важное средство защиты, но особенно следует подчеркнуть, что когда ведуться разработки приложений несколькими разными разработчиками, то имеет смысл обозначить, что, например, код одного приложения не может иметь доступ к источнику данных, принадлежащему другому приложению.В чем отличие "sandbox security" от "resource security"?
Более подробно мы столкнемся с их различиями далее, когда будем рассматривать их настройку, а пока просто имейте в виду, что в редакции Enterprise вы можете создавать неограниченное количество так называемых sandbox'ов (поэтому используется выражение "sandbox security") для каждого приложения, а в редакции Prefessional понятия sandbox нет (поэтому используется выражение "resource security") и установленные настройки распространяются сразу на все приложения.
Множество sandbox'ов в редакции Enterprise, конечно, предоставляет большую гибкость в настройке безопасности, если ваша компания предоставляет услуги хостинга или имеет корпоративную локальную сеть, где большое количество приложений имеют доступ к одному серверу и поэтому должны быть обособлены друг от друга.Включаем и настраиваем "sandbox/resource security"
Теперь давайте попробуем установить некоторые настройки управления ресурсами вашего веб сайта. (конечно, сперва их нужно проводить на компьютере разработчика, а уж потом на самом веб сервере).
Шаг 1: Открываем Административную оболочку, а в ней страницу "Sandbox Security"Рисунок 1a: Страница "Resource Security" в ColdFusion MX Professional.
Рисунок 1б: Страница "Sandbox Security" в ColdFusion MX Enterprise.
Шаг 2а: Ставим галочку на "Enable ColdFusion Security"Для обоих редакций, перед тем как установки управления ресурсами начнуть действовать, следует включить опцию "Enable ColdFusion Security". Как уже было сказано выше, по-умолчанию эта опция отключена. Главное удобство заключается в том, что можно сначала установить нужные вам настройки, а потом разом их все включить.
Поставьте галочку на "Enable ColdFusion Security" и подтвердите изменения, нажав на кнопку "Submit Changes".Шаг 2б: Перезапускаем ColdFusion MX сервер
Посло тего как мы включили безопасность, мы должны перезапустить ColdFusion MX сервер. Это очень легко забыть, но если не сделать это, то вы непременно заметите, что ни одно из установленных вами изменений не работает.Теперь, когда мы включили безопасность и перезапустили ColdFusion MX сервер, любые проводимые нами изменения будут вступать в силу сразу же. Не нужно будет возвращаться на страницу "Sandbox/Resource Security" и нажимать кнопку "Submit Changes", а также больше не нужно перезаускать сам ColdFusion MX сервер.
Шаг 3: Создаем SandboxСоздание sandbox'ов, как уже было сказано выше, доступно только в редакции Enterprise и, если у вас редакция Professional, то вы сразу можете переходить к следующему шагу.
Когды вы в первый раз включили безопасность (Шаг 2), то ColdFusion по умолчанию предлагает 2 sandbox'а: ColdFusion CFIDE System Directory and ColdFusion WEB-INF System Directory. Пока вам не нужно о них беспокоиться: их можно редактировать, но нельзя удалить. Заметьте, что если вы не определили ни одного sandbox'а, то любой код в любой директории будет отрабатываться без ограничений.Чтобы определить уровень доступа к какой-либо директории, нужно создать для нее sandbox:
Шаг 4: Настраиваем управление ресурсом
Теперь мы может определить доступ кода к источникам данных, тегам, функциям и т.п. Предлагаемой нам диалоговое окно состоит из 5 вкладок:Первая вкладка - это "Data Sources" - "Источники данных". Чтобы отключить один или более источников данных, выберите его в окне Enabled Data sources слева (если вы хотите сразу выбрать несколько источников данных, то при их выборе удерживайте нажатой клавишу Ctrl). Затем нажмите на кнопку ">>" в центре окна, чтобы переместить выбранные вами источники данных в окно Disabled Data sources справа. Теперь, при вызове оключенного вами источника данных, на странице будет показано сообщение об ошибке. Значение опции << ALL DATASOURCES >> означает, что выбрав эту опцию, вы разом можете отключать или включать все источники данных, указанные на странице "Data Sources" Административной оболочки.
Если вы не сделали никаких изменений (т.е. в окне Disabled Data sources не указано ни одного источника данных), то ни на один источник данных ограничений не установлено. Такой же принцип применим и ко всем остальным вкладкам, т.е. если вы не указали никаких ограничений, то никаких ограничений для данного типа ресурса и нет.Тестируем настройки sandbox'а
Перед тем, как продолжит рассказ о настройке других типов ресурсов, следует продемонстрировать "sandbox/resource security" в действии.Во-первых, следует напомнить, что не следует проводить тесты на самом веб сервере во избежании случайных настроек, которые могут "задеть".другие приложения. Во-вторых, перед проведением тестов убедитесь что безопасность включена (Шаг 2). Помните, что по-умолчанию эта опция отключена. В-третьих, после того, как вы включили безопасность (Шаг 2) перезапустили ли вы ColdFusion MX сервер? Последние два совета часто забывают, поэтому посчитал нужным напомнить вам о них еще раз.
Теперь, запустите код, которые находится под управление ранее созданного sandbox'а. Попробуйте с его помощью по очереди вызвать разрешенный и запрещенный источники данных - ошибка появится при вызове только запрещенного.Шаг4б: Ограничиваем доступ к тегам и функциям
Используя вкладки CF Tags и CF Functions вы можете указать определенные теги и функции, которые не смогут отрабатываться. Вид этих двух вкладок показан на рисунках 2 и 3 соответственно.Рисунок 2. Настройки вкладки CF Tags в ColdFusion MX Prefessional
Рисунок 3. Настройки вкладки CF Functions в ColdFusion MX Prefessional
Зачем нужно ограничивать доступ к тегам и функциям ColdFusion? По одной причине, вам возможно захочется ограничить доступ пользователей к таким тегам как, например, <cfregistry> и <cfexecute>, благодаря которым можно получить доступ к системной информации и ресурсам. Сайты под редакцией Professional желательно должны иметь запрет обработку таких тегов, поскольку вряд ли существует доверие сразу ко всем разработчикам. В редакции Enterprise желательно установить такой запрет на всю папку с сайтами, а потом создавать дополнительные sandbox'ы с дополнительными настройками.По другой причине, вам, возможно, понадобиться ограничить обработку таких тегов, благодаря которым можно получить доступ к файлам и каталогам. Впрочем, назначить уровень доступа к файлам и каталогам можно и в четвертой вкладке - Files/Dirs (Файлы/Каталоги).
Шаг 4в: Ограничиваем доступ к файлам и каталогамВкладка Files/Dirs (Файлы/Каталоги) возможно самая важная из всех. Ее вид показан на рисунке 4.
Рисунок 4. Настройки доступа к файлам и каталогам в ColdFusion MX Prefessional
Ограничение доступа к файлам и каталогам не так просто как ограничение доступа к источникам данных или к тегами или функциям. Во-первых, здесь нужно указать путь к файлу или каталогу, доступ к которым нужно ограничить. Обратите внимание, что в поле File Path путь к файлу или каталогу можно напечатать или указать, нажав на кнопку "Browse Server".Во-вторых, здесь нужно указывать файлы или каталоги, доступ к которым нужно разрешить, а не запретить, в отличие от других вкладок, где мы указываем на то, что хотим запретить.
В-третьих, обозначив определенный файл или каталог, вы разрешаете доступ только к данному файлу или каталогу. Любые попытки получить доступ к другим файлам или каталогам будут проигнорированы.Если вы хотите предоставить доступ ко всем файлам на сервере, то не нужно указывать все каталоги по отдельности. Достаточно воспользоваться ключевым словом "<< ALL FILES >>", которое нужно указать в поле File Path. В редакции Professional это ключевое слово уже указано по-умолчанию.
В редакции Enterprise по-умолчанию предоставляется доступ ко всем файлам в пределах данного sandbox'а. Это очень удобно, но тем не менее следует добавить опцию "<< ALL FILES >>" для предоставления более широких полномочий доступа - кроме того, будет более благоразумно установить, к каким файлам и каталогам будет иметь доступ разработчик данного приложения.В четвертых, очень важно отметить, что указывая путь к каталогу, вы можете делать это тремя способами. Например, если вы хотите предоставить доступ к каталогу c:\cfusionmx\wwwroot\cfmxdemo, то вот три варианта пути к нему:
с:\cfusionmx\wwwroot\cfmxdemo\ c:\cfusionmx\wwwroot\cfmxdemo\* c:\cfusionmx\wwwroot\cfmxdemo\-Первый вариант предоставляет доступ только к самому каталогу, но не к файлам и подкаталогам внутри него, второй способ - к самому каталогу, к файлам в нем, к подкаталогам и к файлам всех подкаталогов (это наиболее часто используемый способ), третий способ - к самому каталогу, к файлам в нем, к подкаталогам, но не к файлам в подкаталогах.
Для каждого установленного вами пути вы можете назначать привелегии: read (чтение), write (запись), execute (исполнение) или delete (удаление). Привелегии write и execute распространяются только на файлы, а read и delete и на файлы, и на каталоги.
Существует дилемма, при которой вы не сможете ограничить доступ к какому-либо определенному файлу или каталогу, а для всех остальных фалов и каталогов оставить полный доступ. В этой ситуации нужно удалить опцию "<< ALL FILES >>", если она была установлена, и один за одним указать все файлы и каталоги, к которым вы хотите определить определенные уровни доступа. Это может показаться утомительным занятием.Если вам кажется, что указанные вами изменения еще не вступили в силу, то вы должны нажать кнопку Add Files/Paths, если вы добавляете новый путь, или Edit Files/Paths, если вы редактируете настройки. Как уже было сказано выше, указанные изменения на этой странице вступают в силу сразу же и нет необходимости нажимать "Finish", чтобы вернуться на страницу, показанную на рисунке 1.
И в заключении следует отметить, что в редакции Enterprise при создании sandbox'а у вас есть возможность устанавливать разрешения на файлы и каталоги вне данного sandbox'а.Шаг 4г. Ограничиваем доступ к серверам/портам
Доступ к определенным серверам может осуществлятся с помощью таких тегов как, например, <cfhttp>, <cfmail>, <cfldap> и т.п. Настройки вкладки "Server/Ports" позволяют нам ограничивать и этот доступ. Ее вид показан на рисунке 5.Рисунок 5. Настройки доступа к серверам в ColdFusion MX Prefessional
Принцип работы с этой вкладкой такой же как и с вкладкой "Files/Dirs". Здесь нужно указывать названия доменных имен или IP адресов, доступ к которым нужно ограничить. Если не указать никаких доменных имен или IP адресов, то по-умолчанию доступ открыт ко всем серверам.Будет ошибкой думать, что можно указывать только IP адреса. Также можно указывать и названия доменов (например, yahoo.com или www.google.com), причем первую часть доменного имени - 'www.', можно не указывать, если вы хотите позволить все виды доступа к данному домену. Также, не обязательно указывать номер порта, если вы хотите разрешить все виды доступа к данному домену или IP адресу.
И в заключении, как и во вкладке "Files/Dirs", чтобы изменения вступили в силу, достаточно только нажать Add (или Edit) IP Address. Одно нажатие "Finish" изменения не сохраняет.
© 2002-2005 г. Вадим Пушкарев