Коммерческие сайты, особенно сайты электронной коммерции, требуют регулярного обновления информации о ценах на продукты, о специальных предложениях или нуждаются в интерактивных веб-страницах, структура которых зависит от запроса, полученного веб-сервером. Динамическое или
Динамическое содержимое обеспечивает успех сайта электронной коммерции, на страницах которого отображаются последние сведения о ценах и товарах, а пользователи ищут необходимые товары и сразу же приобретают их. Динамическое содержимое используется и в интрасети организации, публикующей внутренний перечень номеров телефонов. Если эти записи берутся из базы данных, все изменения, вносимые сотрудниками, немедленно отражаются в интерактивном перечне сразу после обновления базы данных, без редактирования страниц вручную.
В IIS при автоматическом
Администратору IIS необходимо реализовать доставку
CGI, ASP и Perl являются самыми распространенными технологиями, используемыми в IIS для обеспечения
Технология CGI представляет собой мощную систему, на компьютерах UNIX с ее помощью создается веб-содержимое в реальном времени. Однако каждое приложение является скомпилированной программой, и поэтому каждый раз после внесения изменений требуется перекомпиляция исполняемого файла. Для этого разработаны языки сценариев серверной части, интерпретируемые и исполняемые машиной сценариев с результирующими выходными данными, отправляемыми в приложение веб-сервера через CGI.
Сценарии CGI используются для расширения возможностей веб-серверов, чаще всего для обработки форм. Сценарий выступает в роли моста между ресурсом и сервером; ресурсом в данном случае является объект, обеспечивающий работу службы, например, программа электронной почты или база данных. Сценарий переводит предоставляемую ресурсом информацию в HTML-формат, чтобы сделать ее читабельной для запрашивающего браузера. Это расширяет возможности веб-сервера для обработки информации из всевозможных источников, расположенных на различных узлах.
Информация передается приложению CGI посредством указания имени приложения в адресе URL. Например:
<FORM ACTION=http://www.ваш_сервер.com/scripts/processorder.pl METHOD=POST>
Здесь URL указан в виде части тега FORM. После получения данных формы сервер ваш_сервер.com передаст управление приложению CGI (в данном случае это интерпретатор Perl, обозначенный файловым расширением .pl), которое обработает сценарий processorder.pl и запрос, после чего вернет страницу, созданную на базе полученных из формы данных.
IIS обеспечивает поддержку сценариев и программ CGI, однако предлагает более интегрированные технологии по работе с динамическим содержимым. IIS поддерживает интерфейс программирования серверных приложений
Страницей ASP является HTML-страница, содержащая один или более сценариев, обрабатываемых IIS перед передачей пользователю. ASP взаимодействует с IIS через
Совет. ASP также является сокращением от Application Service Providers (Поставщики услуг приложений). Они обеспечивают управление компьютерными услугами из удаленных центров через интернет или частную сеть.
ASP вызывает компоненты Component Object Model (COM) для обеспечения лучшей функциональности с помощью обработки ресурсов серверной части, однако эта возможность представляет угрозу безопасности. Следует отключить или удалить все ненужные для работы сайта компоненты COM, например, File System Object (Объект файловой системы), предоставляющий веб-приложениям доступ к жестким дискам. Для отключения File System Object выполните следующую команду:
regsvr32 scrrun.dll /u
Для получения более подробной информации о приложениях COM используйте апплет Component Services (Службы компонентов) из папки Administrative Tools (Администрирование).
Совет. Технология COM в интернете известна как ActiveX – программная архитектура, позволяющая создавать приложения из программных компонентов многоразового использования. Метод создания и использования компонентов формирует базу для высокоуровневых программных служб, таких как OLE (сокр. от object linking and embedding – связывание и внедрение объектов), обеспечивающих межпрограммное использование сценариев и передачу данных.
Серверная часть представляет собой ограниченный тип приложения CGI. На самом деле ASP распознает элементы #include для замещения этой инструкции содержимым другого файла. Следующая строка кода обеспечивает включение файла postalrates.inc в нужное место:
<!-- #include file="/includes/postalrates.inc" -->
Для обработки директивы #include используется библиотека ssinc.dll, а затем asp.dll интерпретирует всю страницу. Это очень удобно при повторном использовании нескольких строк кода на различных страницах. Microsoft рекомендует применять вставку файлов для облегчения работы с ним, так как в этом случае для изменения кода на нескольких страницах требуется изменение только одной. Однако при открытии файла вставки непосредственно в браузере злоумышленник получит доступ к исходному коду, так как файлы вставок не обрабатываются ASP. Для предотвращения этого следует либо связать файлы вставок с расширением .inc с ASP, либо переименовать их, указав расширения .asp, чтобы обеспечить выполнение всего кода сценариев и возврат в веб-браузер только результатов обработки. (Обратитесь к разделу "Совместимость с приложением" в этой лекции.)
IIS поддерживает пять директив
#config #echo #fsize #flastmod #exec
Нельзя применять эти директивы на странице ASP. Вместо этого используйте одно из специальных расширений HTML, по умолчанию настроенных на употребление директив #exec должна быть отключена, так как она позволяет выполнять программы командной строки или CGI в контексте веб-сервера в отдельном пространстве памяти. IIS по умолчанию отключает эту директиву, но следует убедиться, что следующий параметр реестра установлен на нуль (или отсутствует): HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\ Parameters\SSIEnableCmdDirective.
Технология ActivePerl разработана фирмой ActiveState и доступна бесплатно на сайте http://www.activeperl.com/. Perl является популярным языком программирования, в особенности среди разработчиков для платформы UNIX. Windows-версия ActivePerl обеспечивает дополнительные возможности платформы IIS – PerlScript и Perl для
ASP взаимодействует с IIS через
В отличие от большинства версий Perl PerlScript позволяет внедрять теги сценариев непосредственно в веб-страницу, аналогично VBScript в страницах ASP. При установке ActivePerl выберите инсталляцию Perl для
.
В лекции 4 говорилось о настройке разрешений Windows NTFS для веб-сайтов, папок и отдельных файлов для контроля доступа пользователей к веб-содержимому. Вместо установки разрешений на каждый файл легче и безопаснее создать папки для файлов определенных типов, например, для статического содержимого или сценариев. Хорошо продуманная структура каталогов веб-сайта упрощает управление разрешениями веб-содержимого, так как они устанавливаются на уровне папки. Для стандартного веб-сайта создайте следующие папки (см. лекцию 3).
| Папка | Содержимое | Типы файлов | Путь |
|---|---|---|---|
| static | Статическое содержимое, сценарии клиентской части | .htm, .html, .js | D:\my_website\static |
| include | Файлы вставок | .inc | D:\my_website\include |
| content | Файлы сценариев | .asp | D:\my_website\content |
| live | Исполняемые файлы | .exe, .dll, .cgi, .pl | D:\my_website\live |
| images | Файлы изображений | .gif, .jpg | D:\my_website\images |
Такая структура сайта не обязательно является образцом для веб-дизайнеров, однако с точки зрения безопасности мы рекомендуем именно этот подход.
Важно. На разрабатываемом сервере используйте неинформативные имена папок со сценариями и исполняемыми файлами.
После создания папок для веб-содержимого установите разрешения для каждой папки. Ниже приведены рекомендуемые настройки разрешений NTFS для структуры папок:
| Папка | Доступ гостевой учетной записи интернета (IUSR_имя-компьютера) | Доступ администраторов | Доступ системы |
|---|---|---|---|
| static | Чтение | Полный | Полный |
| include | Чтение | Полный | Полный |
| content | Чтение | Полный | Полный |
| live | Нет | Полный | Полный |
| images | Чтение | Полный | Полный |
Для разрешения выполнения сценариев на сервере нужно настроить параметры приложения IIS на главном уровне, уровне сайта или уровне
В консоли Internet Services Manager (Диспетчер служб интернета) значок коробки (см. рис. 11.1) означает стартовую точку приложения с подкаталогами, являющимися частью приложения.
Веб-сайт по умолчанию, созданный при установке IIS, представляет собой стартовую точку приложения или корень приложения (см. рис. 11.2). Используйте Internet Services Manager (Диспетчер служб интернета) для назначения каталога стартовой точке приложения. Для этого откройте окно главных свойств, веб-свойств или свойств виртуального каталога щелчком правой кнопкой мыши на соответствующем объекте в

(рис 11.2) Приложение evaluator является стартовой точкой веб-сайта(рис 11.1) Веб-сайт по умолчанию является стартовой точкой приложения
Если сайт состоит только из статического содержимого, убедитесь в том, что в ниспадающем меню Execute Permissions (Разрешения на выполнение) выбран параметр None (Нет) в окне Default Web Site Properties (Свойства веб-узла по умолчанию). Для разрешения выполнения связанного со сценариями приложения (например, ASP) выберите параметр Scripts Only (Только сценарии). Не выбирайте опцию Scripts And Executables (Сценарии и исполняемые файлы), если на сервере не нужно выполнять исполняемые файлы.
Существует разница между разрешениями веб-сервера и разрешениями NTFS. Разрешения веб-сервера применимы ко всем пользователям, осуществляющим доступ к сайту.
Разрешения NTFS применяются только к определенному пользователю или группе пользователей с корректными учетными записями Windows, они определяют доступ к физическим каталогам на сервере; веб-разрешения управляют доступом к виртуальным каталогам на веб-сайте. Они применяются ко всем пользователям независимо от их прав доступа. Например, установка разрешения Read (Чтение) на виртуальный каталог позволяет его просматривать, если разрешения NTFS не налагают ограничения на этот просмотр.
По умолчанию учетная запись анонимного пользователя (IUSR_имя-компьютера) наделяется разрешениями NTFS для папок, из которых состоит веб-сайт. Если веб-разрешения и разрешения NTFS для каталога или файла отличаются, то используются параметры с большей степенью ограничения.
IIS предоставляет три возможных процесса для выполнения приложения.
Они обеспечивают различные уровни защиты. При возникновении ошибки в приложении процесс, в котором оно выполняется, перестает отвечать на запросы. По умолчанию inetinfo.exe выполняется в своем собственном процессе, а другие приложения – в одном и том же объединенном процессе. Необходимо найти оптимальное соотношение между производительностью и уровнем защиты приложения. Приложения, выполняющиеся в веб-службах, обрабатывают результат с большей производительностью, но и с большей вероятностью того, что неправильно функционирующее приложение сделает недоступными веб-службы. Следовательно, inetinfo.exe выполняется в собственном процессе, жизненно важные приложения – в своих процессах (высокий уровень безопасности), остальные приложения – в объединенном процессе (средний уровень безопасности).
Для вызова нужного интерфейса
Связи с приложением устанавливаются в стартовой точке приложения на вкладке App Mappings (Связь с приложениями) окна Application Configuration (Настройка приложения). Выполните следующие действия.
(рис 11.4) Убедитесь в том, что установлены связи только с теми приложениями, которые используются IIS(рис 11.3) Обеспечьте выполнение кода, содержащегося в файлах вставки, перед отправкой клиенту, установив связь файлов .INC с ASPСовет. Обратитесь к разделу "Инструмент безопасности URLScan" в этой лекции для получения подробной информации о том, какие команды необходимо разрешать для работы отдельных приложений.
Для удаления связи с приложением выберите расширение файла на вкладке App Mappings (Связь с приложениями) и нажмите на кнопку Remove (Удалить).
Для предотвращения случайного изменения файлов веб-разработчиками необходимо контролировать исходные файлы. Например, если файл вставки удален или перемещен без страниц, которые обновлялись с использованием этого файла, то при доступе к этим страницам возникнет ошибка, и откроется доступ к информации о системе.
Контролируя доступ на запись веб-содержимого, управление исходными файлами исключает единовременное редактирование одного и того же файла двумя пользователями, а также удаление и
В программах контроля над исходными файлами используется система приписки и отписки файлов, аналогичная системе выдачи и приема книг в библиотеке. Если файл занят пользователем, то его больше никто не может использовать или редактировать, пока он не будет освобожден. Если файл не приписан для редактирования, его никто не сможет изменить. В
Программное обеспечение, предназначенное для контроля над исходными файлами, можно интегрировать с IIS, если установлены серверные расширения FrontPage Server Extensions (FPSE). FPSE представляет собой набор программ и сценариев, поддерживающих разработку в FrontPage (популярный редактор веб-страниц от Microsoft) и расширяющих функциональные возможности IIS. Для установки FPSE прочтите раздел "Серверные расширения FrontPage" далее в этой лекции. Не рекомендуется устанавливать FPSE на веб-серверах.
Если расширения FPSE установлены, включите контроль версий файлов.
Программа Visual SourceSafe (см. рис. 11.6) представляет собой приложение уровня предприятия для контроля над изменением исходных файлов; она дополнительно обеспечивает отслеживание версий и функции отката. Для получения информации об интеграции Visual SourceSafe с программой FrontPage обратитесь к разделу "Контроль исходных файлов серверных расширений" в Microsoft FrontPage Server Extensions Resource Kit.
(рис 11.6) Программа Microsoft Visual SourceSafe сохраняет файлы проектов в базе данных, позволяя открывать старые версии изменяемых файловFrontPage предоставляет два метода контроля над исходными файлами: встроенную упрощенную
В зависимости от используемого средства разработки проверьте, не засорена ли система файлами .
Иногда в интернете попадаются сайты с предупреждениями о том, что копирование содержимого сайта запрещено. Часто для защиты авторских прав используются скрываемые панели инструментов веб-браузера и панели инструментов перехода, а также сценарии JavaScript, отключающие всплывающие меню. Тем не менее, для опытных пользователей эти методы защиты авторских прав являются не только раздражающими, но и легко преодолимыми при помощи целого ряда способов.
Совет. Если вы добавляете в свой код уведомление об авторских правах, то в любом судебном процессе это облегчит доказательство того, что результат вашего труда был скопирован нелегально. Для получения дополнительной информации обратитесь к разделу "Кодировщик сценариев" далее в этой лекции.
Следует всегда добавлять строку уведомления об авторских правах внизу каждой веб-страницы. Например, "© 2002, ваше_имя/компания. Все права защищены". Эту строку можно добавить, выбрав опцию Enable Document
(рис 11.7) Введите полный путь к файлу нижнего колонтитула или нажмите на кнопку Browse (Обзор) и найдите его в дереве каталогов.
Наиболее часто встречающимся недостатком сценариев, используемых для генерирования динамического содержимого, является обработка вводимых пользователем данных (например, данных формы) без их проверки. При вводе некорректных данных хакерам, их отправившим, открывается возможность для выполнения ряда атак. Любой сайт, осуществляющий прием данных от пользователя, подвержен атакам, если получаемые данные не проверяются перед их обработкой.
В языке HTML для отличия текста от тегов разметки используются некоторые символы. Например, символ "меньше чем" ("<") означает начало тега HTML. Когда веб-браузер считывает символ "<", он осуществляет поиск корректного тега HTML, располагающегося после этого символа. Если на странице HTML требуется отобразить сам символ "<", разработчику нужно заменить "<" на <.
Теги могут либо управлять форматом содержимого страницы, либо представлять программу для выполнения (например, тег <SCRIPT> представляет код различных языков сценариев). Хакер может вставить в поле формы вредоносный код вместо ожидаемого содержимого. Например, вместо указания адреса электронной почты в гостевой книге веб-сайта ввести следующий код:
<A HREF=http://www.плохой_сервер.com/scripts/вредоносный.asp>Щелкните здесь – специальное предложение</A>.
Если код не будет проверен, то сценарий возвратит эти данные каждому пользователю, просматривающему комментарии посетителей в гостевой книге, и отобразит гиперссылку: "Щелкните здесь – специальное предложение". Пользователь, щелкнувший на этой ссылке, перенаправится на сайт www.плохой_сервер.com. Все будет выглядеть так, будто вредоносный код поступил с вашего сайта. При отправке и отображении вредоносного сценария (так называемая "подстановка сценариев") хакер потенциально может захватить управление сайтом.
Непроверенные введенные данные могут вызывать, например, нарушение целостности данных, установку и считывание элементов cookie и перехват вводимых пользователем данных. Принимая во внимание огромное количество пробелов в безопасности, создаваемых непроверенными данными на общем веб-сервере, удивительно, что на большинстве сайтов до сих пор отсутствует проверка данных перед их обработкой. Если ваши сценарии принимают данные от пользователей интернета, обеспечьте их проверку, кодирование и фильтрацию символов со специальным значением, чтобы они не воспринимались как код HTML.
Вводимыми данными называются данные, передаваемые сценариям для обработки; они обычно поступают из веб-формы, из базы данных или из другого источника. Фильтрация ввода работает посредством удаления специальных символов из вводимой информации, которые позволяют генерировать сценарий в потоке данных HTML. Ниже приведены специальные символы:
< > " ' % ; ) ( + -
Конкретная ситуация может потребовать фильтрацию дополнительных символов, помимо указанных.
IIS передает данные, отправленные
function ValidateFormData(form) {
var theNumber = form.Telephone.Value;
var valid = true
var GoodChars = "0123456789()-+ "
var i = 0
if (theNumber =="") {
// Возврат значения "ложь" при отсутствии номера телефона
valid = false
}
for (i =0; I <= theNumber.length -1; i++) {
if (GoodChars.indexOf(theNumber.charAt(i)) == -1) {
alert(theNumber.charAt(i) + "является некорректным символом.")
form.Telephone.focus();
valid = false
}
}
return valid
}
Данные, введенные в поле формы ValidateFormData в методе onSubmit формы следующим образом:
<FORM ACTION="scripts/process.asp" METHOD="POST" onSubmit="return ValidateFormData(this);">
Следующий фильтр, написанный на JavaScript, является примером того, как следует удалять специальные символы:
function RemoveBadChars(strTemp) {
strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\|\+|\-/g,"");
return strTemp;
}
Еще одним способом контроля вводимых данных является указание предельного размера данных в полях ввода; это ограничение устанавливается добавлением атрибута MAXLENGTH в теги ввода текста. Например, если поле предназначено для ввода восьмизначного числа, следует ограничить вводимые пользователем данные:
<input type="text" name="ordernumber" MAXLENGTH="8">
Такая блокировка усложняет хакеру задачу по вводу вредоносного кода. Тег <applet></applet> или <script></script> сам по себе занимает 17 символов.
Проверка клиентской части вводимых данных предотвращает их ненужную обработку, если пользователь допустил ошибку. Однако эта проверка не является столь же функциональной, как проверка серверной части. При использовании сценариев для получения вводимых данных <TEXT> из формы HTML их тип неизвестен, и некоторые символы, в обычной ситуации отбрасываемые фильтром, могут оказаться приемлемыми.
Если сценарий предназначен для обработки информации из базы данных, нельзя по умолчанию предполагать, что эти данные являются корректными. При контроле ввода информации в базу данных следует использовать проверку корректности в точке ввода данных. Эта проверка является составляющей частью качественно реализованной базы данных.
Элементы управления проверкой ASP.NET. Так как проверка вводимых пользователем данных очень важна с точки зрения безопасности, ASP.NET (последняя версия ASP от Microsoft для платформы .NET) обеспечивает
В примере фрагмент кода веб-приложения ASP.NET обеспечивает ввод пользователем правильного адреса электронной почты; проверка выполняется элементом управления RegularExpressionValidator. При отправке данных формы содержимое поля адреса электронной почты проверяется на соответствие регулярному выражению, и если соответствие не подтверждается, пользователь получает сообщение об ошибке.
E-mail Address: <BR> <input id=txtEmail type=text size=35 MAXLENGTH=35 runat=server/> <asp:RegularExpressionValidator ID=valEmailAddress ControlToValidate=txtEmail ValidationExpression=".*@.*\..*" ErrorMessage="Введен неправильный адрес электронной почты." Display=None EnableClientScript=true Runat=server/>
При передаче адреса электронной почты неправильного формата отображается содержимое ErrorMessage. ASP.NET предоставляет целый набор подобных элементов управления, связанных с безопасностью. В случае переноса сайта на ASP.NET разработчики должны уметь применять эти дополнительные меры безопасности в коде, с которым они работают.
Сценарий должен проверять и очищать данные перед их обработкой, что обеспечит удаление всех некорректных данных и правильное выполнение кода. Очень важно реализовать проверку серверной части, так как некоторые данные передаются внутри самого URL, который не проверяется на клиентской части. Для проверки данных используются и более мощные алгоритмы. Язык сценариев VBScript версии 5.0 и выше работает с регулярными выражениями с целью фильтрации и очистки входящих данных. Посредством создания шаблонов, соответствующих конкретным строкам, осуществляется поиск и замена введенных пользователем данных для проверки их на наличие черт вредоносного характера. Синтаксис шаблона VBScript заимствован из языка Perl.
Следующий пример кода выполняет удаление всех символов, не лежащих в диапазонах 0 – 9, a – z, A – Z и не являющихся пробелом, из строки strTainted:
<% Set reg = New RegExp Reg.Pattern = "\W+" strTainted = reg.Replace(strTainted, "") %>
. Общая информация о сценариях Windows находится по адресу http://msdn.microsoft.com/scripting/.
При запросе сценарием информации из базы данных, скорее всего, осуществляется сохранение процедуры. Общий объем данных, переданных сохраненным процедурам, не должен превышать установленный максимум. Все отправляемые запросы нужно проверить на превышение максимально допустимого размера.
Данные, передаваемые базе данных, должны проходить фильтрацию. Злоумышленник в запросах SQL может отправить групповые символы ("%" и "_"), разрешенные в выражениях SQL, и получить все записи из таблицы SQL. Осуществляйте фильтрацию этих символов в любых вводимых пользователем запросах к базе данных.
IIS передает документ HTML веб-браузеру в виде потока байтов, а браузер воспринимает их как последовательность символов. Для правильного отображения этого потока все HTML-страницы и страницы с
При фильтрации вводимых пользователем данных следует указать набор символов, используемый на веб-страницах, для обеспечения фильтрации специальных символов. Необходимо установить кодировку для каждой страницы и разрешить передачу заведомо безопасных символов, а не исключать небезопасные символы. Так как постоянно разрабатываются новые браузеры и языки сценариев, нельзя быть на сто процентов уверенным в том, что учтены все возможные комбинации символов, представляющие опасность для системы.
Чтобы установить кодировку символов на веб-странице, необходимо включить в код страницы тег МЕТА, который должен стоять как можно выше в коде страницы, по возможности сразу после тега <HEAD>. В этом примере веб-браузер будет использовать для отображения страницы кодировку ISO-8859-1:
<html> <head> <META http-equiv="Content-Type" content="text/html; CHARSET=ISO-8859-1"> <title>Safer HTML</title> </head>
Широко используемыми в интернете кодировками являются: ISO-8859-1, называемая
Все входные данные нужно кодировать при записи в виде HTML. Этот подход частично эффективен для тех данных, которые нельзя быстро проверить при вводе. Представьте себе, что в базе данных отсутствует контроль над процессом ввода информации. Недовольный зарплатой сотрудник организации может ввести вредоносный код в поле базы данных, который отобразится при вызове из сценария. Большая часть языков сценариев содержит функцию кодировки, например, методы объекта сервера ASP HTMLEncode и URLEncode. Разработчики должны помнить об этой форме кодировки серверной части и применять ее в тех местах, где это требуется. Такой подход аналогичен фильтрации за исключением того, что здесь кодируются данные, записываемые для отправки клиенту. Более подробная информация об обработке вводимых данных расположена на сайте
Убедитесь, что разработчики выполняют следующие девять правил при создании динамического содержимого для сервера IIS.
AUTOCOMPLETE=OFF в тег <FORM> или <INPUT> всех форм, используемых для запроса паролей. Например: <INPUT TYPE=password NAME=Password SIZE=16 MAXLENGTH=16 AUTOCOMPLETE=OFF><SCRIPT Language="JavaScript">
<!--
window.setTimeout("window.navigate('Logoff.asp')", 300000);
//--></SCRIPT>
Пользователи будут перенаправляться на страницу Фильтры
Важно. Если вы заключаете контракт со сторонними разработчиками для построения интранет-сайта или веб-сайта, или если на сервере используются готовые библиотеки
ISAPI DLL, обратитесь к заметке "Проверки сторонних программ" в лекции 9.
URLScan представляет собой средство безопасности, работающее вместе с программой IIS Lockdown (см. лекции 3) и обеспечивающее отключение ненужных функций и ограничение типов HTTP-запросов, обрабатываемых IIS. Как и фильтр
Окно Properties (Свойства) фильтров
(рис 11.8) Указанные фильтры ISAPI выполняются для всех веб-сайтов, расположенных на сервереСовет. При добавлении фильтров для веб-сайта в окне Properties отобразятся только фильтры, установленные для данного веб-сайта, несмотря на то, что могут существовать глобальные фильтры, наследуемые из главных настроек веб-сервера.
Нажмите на кнопку Add (Добавить) и введите название фильтра в поле Filter Name (Имя фильтра). Найдите файл
После добавления или изменения глобального фильтра необходимо остановить и перезапустить веб-сервер, чтобы загрузить новые фильтры в память. Фильтр, добавляемый на уровне веб-сайта, автоматически загружается после добавления.
Большая часть сценариев JavaScript включается в веб-страницы или содержится в файле JavaScript (.js), и код сценариев доступен каждому пользователю, который просматривает исходный код файла. Как правило, это не представляет серьезной проблемы, однако что делать, если вы разработали свои собственные сценарии JavaScript, которые не должны быть доступны для просмотра? В этом случае следует использовать фильтр
Отслеживая уведомления OnUrlMap, фильтр
Важно. Никогда не включайте системные пароли в сценарии. В этом случае пароли будут доступны для чтения любому разработчику и выявлены при нарушении безопасности сайта.
Одним из недостатков использования сценариев является то, что любые алгоритмы и код собственной разработки видны любому пользователю, которому разрешено редактировать файл, так как они хранятся в виде обычного текста. Этот недостаток в защите
После того как сценарий закодирован, изменение любой части результирующего файла сделает его недействительным, что обеспечит его целостность. Клиенты, для которых разработан код, не смогут его изменять, что значительно упрощает решение проблем, связанных с ошибками, так как в данном случае вы будете уверены в том, что код не был изменен. Данная мера не предотвратит доступ хакера к коду, однако определенно нарушит планы большинства не слишком осведомленных пользователей. Сразу после отладки и
Следующий пример кода на языке VBScript демонстрирует использование маркера для кодирования всего кода, кроме сообщения об авторских правах:
<SCRIPT LANGUAGE="VBScript"> 'Copyright© 2002. Ваша компания. Все права защищены. '**Start encode** Код вашей собственной разработки расположен здесь </SCRIPT>
При выполнении кодировщика сценариев весь текст сценария до стартового маркера не кодируется, а данные, находящиеся после маркера, будут закодированы. По завершении процесса кодирования указатель языка в теге <SCRIPT> сменится на
<SCRIPT LANGUAGE="VBScript.Encode" >
Некоторые из динамических элементов веб-содержимого могут быть секретными или разрешенными для доступа только тем пользователям, которые зарегистрировались для использования предоставляемой услуги. Можно контролировать доступ к таким страницам посредством создания списков контроля доступа (ACL) и учетных записей Windows. Но такой подход не применишь на сайте, связанном с электронной коммерцией, так как у него будут тысячи пользователей. Посредством использования сценариев легко осуществляется контроль доступа к страницам без создания учетных записей пользователей Windows.
Этот тип контроля доступа легко реализуется с использованием ASP. Следующий код демонстрирует, как создать страницу входа пользователей для аутентификации зарегистрированных клиентов сайта, после которой они получат доступ к странице со специальными предложениями. Пользователь, не прошедший аутентификацию, будет перенаправлен на другую страницу.
<HTML> <HEAD> <TITLE>Customer Log On</TITLE> </HEAD> <BODY> <FORM METHOD="POST" ACTION="../scripts/logon.asp"> <TABLE WIDTH="100%"> <TR> <TD>User name:</TD> <TD><INPUT TYPE="text" NAME="Username" SIZE="30" MAXLENGTH="30"></TD> </TR> <TR> <TD>Password:</TD> <TD><INPUT TYPE="password" NAME="Password" SIZE="16" MAXLENGTH="16"></TD> <TR> <TD COLSPAN="2" align="CENTER"><INPUT TYPE ="submit" VALUE="Log On"></TD> </TR> </TABLE> </FORM> </BODY> </HTML>
Данные, введенные в форме, передаются странице logon.asp в папке scripts с помощью действия POST. Если содержимое, к которому осуществляется доступ, является особо секретным, например, содержит информацию о кредитных картах или учетных записях, данные входа и любое секретное содержимое должны передаваться через соединение SSL. Сценарий logon.asp сверяет имя пользователя и пароль с информацией, находящейся в базе данных зарегистрированных пользователей. В случае соответствия сценарий logon.asp устанавливает сеансовую переменную и направляет клиента на страницу со специальными предложениями. Если соответствующей информации в базе данных не обнаруживается, это означает, что пользователь еще не зарегистрирован, и происходит его перенаправление на страницу регистрации.
If NoMatch = TRUE Then
Session("Authorized") = FALSE
strURL = "registrationpage.asp"
Else
Session("Authorized") = TRUE
strURL = "specialoffers.asp"
End If
Server.Transfer strURL
Теперь у нас есть сеансовая переменная, которая используется для проверки того, успешно ли пользователь вошел на сайт. С помощью этой проверки в начале каждой страницы с контролируемым доступом обеспечивается доступность страниц только для зарегистрированных пользователей, вошедших в систему.
<%@ LANGUAGE="VBScript" %>
<% Option Explicit %>
<%
If Session("Authorized") = FALSE Then
Response.Redirect "accessdenied.asp"
End If
%>
Всякий пользователь, попытавшийся осуществить доступ к такой странице и не прошедший аутентификацию, будет перенаправлен на страницу accessdenied.asp. На этой странице можно разместить сообщение о том, что пользователь не зарегистрирован, и предложение пройти процедуру регистрации.
Важно. Всегда используйте метод POST для отправки секретной информации из формы. При использовании метода GET введенные в форме данные будут отображаться в адресе URL, который видит каждый пользователь.
Файловая система с шифрованием (
(рис 11.9) Обеспечьте шифрование содержимого папки, включив соответствующую опцию в окне Proрerties (Свойства)Нажмите на кнопку Advanced (Дополнительно) и отметьте опцию Encrypt Contents To Secure Data (Шифровать содержимое для защиты данных) (см. рис. 11.10). Нажмите на OK, чтобы вернуться в Windows Explorer.
После обеспечения шифрования папки можно работать с ней и находящимися в ней файлами, как с любыми другими файлами и папками, поскольку процесс шифрования прозрачен для пользователя. Тем не менее, любой злоумышленник, который попытается открыть, скопировать, переместить или переименовать зашифрованные файлы, получит сообщение об отказе в доступе.
(рис 11.10) Диалоговое окно Advanced Atributes (Дополнительные атрибуты) позволяет включить шифрование файла или папкиПредупреждение.
EFS не сможет шифровать файлы с атрибутом System (Системный). Не пытайтесь преодолеть эту меру защиты для шифрования файлов в системной папке. Секретные ключи, необходимые для расшифровки, недоступны при загрузке системы, поэтому если системные файлы будут зашифрованы, система окажется в нерабочем состоянии.
Итак, каким же образом используется
Важно. При использовании
EFS следует шифровать папки, а не отдельные файлы, так как приложения создают временные файлы в тех же папках, где находятся исходные, особенно в процессе редактирования. При использовании шифрования на уровне папки временные файлы не будут сохраняться в виде открытого текста. По этой же причине следует применить шифрование к папке Temp, расположенной по адресу %SystemRoot%\TEMP.
При поиске в интернете встречаются ссылки на страницы, сгенерированные поисковой системой, которые вызывают ошибку времени выполнения сценария. Причина ошибки заключается в некоторых сведениях, нередко содержащих используемую сценарием информацию, например, данные о структуре бизнеса или расположении базы данных. Это значит, что страница со сценарием не была достаточно протестирована перед публикацией в интернете. Если сценарии, генерирующие ошибки, публикуются в интернете не полностью отлаженными, основные поисковые системы смогут выводить о них некоторые данные.
Например, при поиске в системе Altavista (http://www.altavista.com) по строке "Microsoft VBScript
Подобная утечка информации о системе чрезвычайно полезна для хакера при планировании атаки на сервер. Мы уже говорили о важности связывания файлов вставок с ASP, однако следует убедиться в том, что веб-разработчики качественно отлаживают все страницы со сценариями в автономном режиме перед их публикацией на действующем сервере. Следует также выполнять поиск в интернете собственных страниц для определения корректности их отладки, после чего удалять или переименовывать их в случае ошибок.
Обычно веб-разработчики ограничены во времени и, как правило, ставят на первое место внешний вид, удобство работы и функциональность, а о безопасности думают далеко не в первую, если не в последнюю, очередь. В лекции 9 говорилось о том, что такой подход недопустим при разработке содержимого для интернета. Разработка и тестирование должны проводиться в автономном режиме для успешного устранения всех угроз безопасности создаваемых сценариев, а это возможно при таком выполнении сценария, когда семантические ошибки программирования выявляются сами по себе.
Синтаксические ошибки находить легко, так как программный компилятор или интерпретатор прерывает выполнение кода и обозначает строку с синтаксической ошибкой. Плохо обученный разработчик исправит свои синтаксические ошибки, после чего отгрузит новый код, уверенный в отсутствии ошибок. Однако семантические ошибки или ошибки времени выполнения могут возникнуть во время непосредственного выполнения программы, что позволяет выявить исходный код любым пользователем, запустившим сценарий. Например, при добавлении шестого товара в корзину покупок электронного магазина произойдет семантическая ошибка, если максимальное число товаров для покупки, установленное в программе, равно пяти.
Необходимо, чтобы код разрабатывался программистами с учетом аспектов безопасности. При написании безопасных программ следует проверять наличие файла перед его открытием, а также правильность вводимых значений. Код должен тестироваться посредством ввода различных значений, среди которых есть корректные значения, значения, являющиеся пограничными (т.е. находящиеся на границе между допустимыми и недопустимыми значениями), а также некорректные значения. Такое тестирование предотвратит большую часть ошибок, возникающих из-за вводимых пользователем данных.
Поскольку идеально написанного кода не существует, необходимо обеспечить поддержку
Следующий код VBScript фиксирует любые возникающие ASP-ошибки в файле журнала, а также выводит сообщение для пользователя. Эти действия предотвращают отображение исходного кода страницы, вызвавшей ошибку. Этот код можно модифицировать на передачу информации об ошибке по электронной почте веб-мастеру.
<%LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<%
' Предотвратить прерывание выполнения данной страницы дальнейшими ошибками
On Error Resume Next
Dim objASPError 'Объект ошибки
Dim strErrNumber, strASPCode
Dim strErrDes, strASPDes
Dim strCategory, strFileName
Dim strLineNumber, strColNumber
Dim strSourceCode, strErrorMsg
Dim strErrorLog, strReferrer 'Строки
Dim lngColNum 'Длина
Dim objFSO 'Объект файла
Dim objTStream
DimblnLogFail 'Boolean
'Установка ссылки на объект ASPError
Set objASPError = Server.GetLastError()
‘Сохранение значений свойств объекта ASPError
strErrNumber = CStr(objASPError.Number) 'Код обычной ошибки
strASPCode = objASPError.ASPCode 'Код ошибки ASP
If Len(strASPCode) Then
strASPCode = "'" strASPCode "'"
Else
strASPCode = ""
End If
strErrDes = objASPError.Description
strAspDes = objASPError.ASPDescription
strCategory = objASPError.Category 'Тип ошибки
strFileNAme = objASPError File 'Файл, вызвавший ошибку
strLineNumber = objASPError.Line 'Номер строки в файле
strColNumber = objASPError.Column 'Номер столбца в строке
If IsNumeric(strColNumber) Then 'Преобразовать в целое число
lngColNumber = CLng(strColNumber)
Else
lngColNumber = 0
End If
strSourceCode = objASPError.Source 'Исходный код строки с ошибкой
'Создание сообщения об ошибке
strErrorMsg = "ASP Error " strASPCode "occurred on " Now
If Len(strCategory) Then
strErrorMsg = strErrorMsg " in " strCategory
End If
strErrorMsg = strErrorMsg vbCrlf "Error number: " strErrNumber _
" (0x" Hex(strErrNumber) ")" vbCrlf
If Len(strFileName) Then
strErrorMsg = strErrorMsg "File: " strFileName
If strLineNumber > "0" Then
strErrorMsg = strErrorMsg ", Line " strLineNumber
If lngColNumber > 0 Then
strErrorMsg = strErrorMsg ", Column " lngColNumber
If Len(strSourceCode) Then
strErrorMsg = strErrorMsg vbCrlf strSourceCode vbCrlf _
String(lngColNumber – 1, "-") "^"
End If
End If
End If
strErrorMsg = strErrorMsg vbCrlf
End If
strErrorMsg = strErrorMsg strErrDes vbCrlf
If Len(strAspDes) Then
strErrorMsg = strErrorMsg "ASP reports: " strAspDes vbCrlf
End If
'Зафиксировать ошибку в файле журнала.
'Изменить путь к файлу журнала для конкретной системы.
'Нужно присвоить учетной записи IUSR_имя-компьютера разрешение на
'запись и изменение файла.
strErrorLog = "D:\temp\custom_error.log"
set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTStream = objFSO.OpenTextFile(strErrorLog, 8, True) '8 = ForAppending
If Err.Number = 0 Then
objTStream.WriteLine strErrorMsg vbCrlf
End If
If Err.Number = 0 Then
objTStream.Close
blnLogFail = False
Else
blnLogFail = True
End If
'Вывод сообщения в веб-браузере.
%>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
</HEAD>
<P>К сожалению, запрошенная вами страница содержит ошибку и не может быть отображена.</P>
<%
'Добавить ссылки для возврата на предыдущую или домашнюю страницу.
strReferrer = Request.ServerVariables("HTTP_REFERER")
If Len(strReferrer) Then
Response.Write "<p><A HREF=""javascript:history.go(-1)"">Вернуться на предыдущую страницу</A></P>
End IF
Response.Write "<P>Возврат на <A HREF=""http://www.ваш_домен.com""> домашнюю страницу</A></P>
%>
</P>
<P>Пожалуйста, обратитесь к
<A HREF="mailto:webmaster@ваш_домен.com">веб-мастеру</A>
для выяснения причин возникновения данной проблемы</P>
</BODY>
</HTML>
Обработка ошибок устанавливается на главном уровне, веб-уровне или уровне каталога посредством изменения
Для настройки IIS на отображение сообщения об ошибке откройте консоль Internet Services Manager (Диспетчер служб интернета) и щелкните правой кнопкой мыши на нужном сервере или веб-сайте. Выберите команду Properties (Свойства), откройте вкладку Custom Errors (Другие ошибки) и прокрутите вниз список сообщений об ошибках, чтобы отобразить HTTP Error 500;100 (см. рис. 11.11).
Нажмите на кнопку Edit Properties (Изменить параметры) для изменения параметров сообщения об ошибке, указав созданную или измененную страницу с текстом уведомления (см. рис. 11.12).
Совет. Убедитесь, что файл обработки ошибок не содержит синтаксических ошибок или ошибок времени выполнения; если в коде присутствуют ошибки, они отобразятся в веб-браузере. Строка 5 приведенного выше кода On Error Resume Next обеспечивает выполнение файла без возникновения ошибок.

(рис 11.12) Измененные страницы с информацией об ошибках предоставляют вам и вашим пользователям полезные данные(рис 11.11) Если типом выводимых данных является URL, то этот URL должен существовать на локальном сервере
Ошибки ASP можно передавать в журнал событий Windows, если указаны соответствующие параметры в окне Process Options Properties (Свойства обработки). Для настройки этих параметров откройте окно WWW Service Master Properties (Главные свойства службы WWW), щелкнув правой кнопкой мыши на сервере в Internet Services Manager (Диспетчер служб интернета). Откройте вкладку Home Directory (Домашний каталог), после чего нажмите на кнопку Configuration (Настройка). Откроется окно Application Configuration Properties (Настройка конфигурации приложения). Откройте вкладку Process Options (Обработки опций) (см. рис. 11.13).
(рис 11.13) Параметры конфигурации приложения устанавливаются на уровне веб-сайта и виртуального каталога, а опции обработки – только на главном уровнеОтметьте опцию Write Unsuccessful Client Requests To
Опция Enable Debug Exception Catching (Включить перехват исключений при отладке) отмечается только при отладке, так как она фиксирует любые сообщения об ошибках, поступающие от компонента. Так как отладка должна осуществляться только на сервере разработки, убедитесь, что данная опция отключена.
Иван, молодой разработчик, работающий над новым сайтом электронной коммерции, создает сценарии ASP для подключения веб-сайта к базе данных Microsoft SQL Server, содержащей информацию о клиентах, т.е. их имена, адреса, заказы и т.д. В понедельник утром Иван заявляет, что немедленно увольняется из компании и начинает новую карьеру. Время, отведенное на разработку сайта, неумолимо истекает, поэтому необходимо привлечь на место Ивана другого сотрудника. Вас устраивало качество выполнения Иваном своей работы, однако нужно удостовериться в том, что ее можно использовать.
Первым делом запретите Ивану доступ к файлам ASP и всей сети организации. Проинформируйте сетевого администратора о том, что учетная запись Windows, принадлежащая Ивану, должна быть удалена. Это запретит бывшему сотруднику доступ к сети. В дополнение к этому все члены команды разработки должны сменить свои пароли при следующем входе в систему. Это мера предосторожности необходима на тот случай, если Иван знает пароли других разработчиков компании.
Так как Иван имел доступ к базе данных SQL Server, он знает имя пользователя и пароль доступа, используемый страницами ASP для открытия соединения. У него могла быть и своя собственная учетная запись SQL Server с повышенными привилегиями, позволявшими ему проводить работу по разработке. Проинформируйте администратора базы данных о том, что учетная запись Ивана в базе данных должна быть удалена, а также об изменении пароля, используемого страницами ASP. Кроме этого, необходимо сменить остальные системные пароли, которые мог знать Иван.
Следующая задача состоит в том, чтобы провести обзор всей выполненной Иваном работы. Несмотря на то, что написанный им код хорошо закомментирован, нужно просмотреть каждую строку и выяснить следующее.
После того как код Ивана пройдет эту проверку, протестируйте его на сервере разработки для выявления синтаксических или семантических ошибок. Проверка должна включать в себя передачу данных сценариям (не только корректных значений, но и величин, превышающих максимально допустимые значения или соответствующих граничным условиям). Например, проверьте, каким образом осуществляется поддержка заказа на сумму, равную точно $500, если максимально разрешенной суммой покупки является $500.
Хотя Иван мог и вовсе не включать в код ненужные или вредоносные фрагменты, процедура проверки необходима, так как Иван осуществлял активный доступ к вашей сети и ее ресурсам.
Java-апплеты или элементы ActiveX повышают уровень функциональности сайта, реализовывая ниспадающие меню или бегущую строку. Так как пользователям интернета известны уязвимые места таких апплетов, то после их разработки и тестирования нужно убедить посетителей в том, что содержимому сайта можно доверять, и что он безопасен. Многие сетевые экраны настроены на блокирование апплетов без доверия, а политики безопасности предусматривают запрет установки и выполнения сторонних апплетов на компьютерах сети. Самым простым способом убедиться в безопасности апплета или макроса является подпись объекта при помощи цифрового сертификата подписи кода.
Сертификат идентифицирует организацию и выпускается бюро сертификатов только после того, как оно подтвердит наличие организации и ее сферу деятельности. Примером бюро сертификатов является компания VeriSign. Сертификаты для подписывания кода (в VeriSign они называются цифровыми идентификаторами) позволят разработчикам ставить цифровую подпись на программное обеспечение и макросы для обеспечения безопасности их доставки через интернет. Любой пользователь, загрузивший подписанный цифровым сертификатом элемент ActiveX, Java-апплет, динамически подсоединяемую библиотеку, файлы .cab или .jar, может быть уверен в том, что загружаемый код действительно поступает от вас, а также в том, что он не был изменен или поврежден с момента создания и подписи. Подписывание программ выступает в роли упаковки, в которую "заворачивается" программное обеспечение, так как в случае изменения программы цифровая подпись станет недействительной аналогично тому, как поврежденная пленка на запакованных продуктах предупреждает потребителя о том, что с товаром что-то произошло.
К сожалению, необходимо использовать различные сертификаты для подписи кода от двух основных поставщиков
Многоцелевые сертификаты для подписывания программ можно получить, например, от бюро сертификатов Thawte по адресу http://www.thawte.com. Эти сертификаты используются несколькими приложениями, поэтому не нужно приобретать отдельный сертификат для каждого подписываемого приложения.
Серверные расширения Microsoft FrontPage (FPSE) представляют собой набор программ, которые устанавливаются на сервере IIS для разработки и администрирования расширенных с помощью FrontPage сайтов, позволяя удаленным пользователям выполнять определенные задачи непосредственно на сервере. Фраза "непосредственно на сервере" является причиной того, что в лекции 3 не рекомендовалось устанавливать FPSE на защищаемом сервере, и этот совет по-прежнему остается в силе, так как компонент FPSE уже был предметом атак хакеров. Тем не менее, вам потребуется администрирование и разработка, обеспечиваемая FPSE при предоставлении услуг по веб-хостингу. Информация по установке FPSE находится в следующих разделах, ознакомьтесь с ней, чтобы разобраться в аспектах безопасности этого компонента и повысить его уровень защищенности.
Всегда используйте последнюю версию FPSE (это версия 2002), показанную на рис. 11.14 в окне Properties (Свойства) сервера. Расширения можно загрузить из раздела FrontPage сайта MSDN по адресу http://msdn.microsoft.com/library/default.asp?url/library/en-us/dnservext/html/fpse02win.asp. Пакет FrontPage Server Extensions Resource Kit доступен по адресу http://office.microsoft.com/Assistance/2000/FPserk.aspx; в нем имеются полезные сведения по использованию FPSE.
После установки FPSE 2002 можно использовать страницы HTML Administration или командую строку для администрирования веб-сайтов и сервера. Администрирование расширений FrontPage 2000 Server Extensions раньше осуществлялось при помощи Microsoft Management Console (MMC), а теперь эта возможность недоступна. Так как формы HTML позволяют осуществлять удаленное администрирование, они должны быть удалены. По умолчанию эти формы устанавливаются в каталог C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\50\admisapi\1033 наряду с другими
(рис 11.14) Компонент FrontPage 2002 Server Extensions добавляет собственную вкладку в окна главных свойств, свойств сайта и свойств виртуального каталогаДля
С этим программным пакетом устанавливаются две
Вам пригодятся также две полезные команды Disable и DatabaseConnection. Команда Disable предназначена для отключения разработки и администрирования из клиента FrontPage после внесения каких-либо изменений, а также для их повторного включения при внесении изменений в содержимое. Команда DatabaseConnection предназначена для проверки информации о подключении к базе данных, для шифрования имени и пароля учетной записи перед их сохранением. Более подробная информация об администрировании из командной строки доступна в руководстве администратора по адресу http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechno/sharepnt/proddocs/admindoc/ows000.asp.
Расширенный при помощи FrontPage Extensions сайт содержит веб-страницы, рисунки и другие файлы и документы. Пользователям могут быть присвоены роли для управления или обновления расширенного веб-сайта. Ранее управление ролями пользователей для FPSE осуществлялось из клиента FrontPage с помощью команды Security (Безопасность) в меню Tools (Сервис). При помощи расширений 2002 Extensions осуществляется управление ролями с использованием средства администрирования командной строки или с помощью страниц администрирования HTML. По умолчанию устанавливаются следующие роли.
По умолчанию устанавливаются следующие роли.
FrontPage использует все возможности FPSE. Когда автор или администратор выполняет операцию при помощи FrontPage, он подключается к серверным расширениям, используя протокол удаленного вызова процедур RPC, лежащего в основе HTTP и HTML. Запрос POST отправляется из клиента FrontPage одной из трех библиотек DLL FPSE.
Когда веб-браузер или FrontPage-расширенный веб-сайт запрашивает страницу, требующую FPSE, например, форму отправки данных поиска, он отправляет запрос POST программе просмотра Shtml.dll. После получения службой IIS запроса для FPSE она осуществляет вход в систему и имитирует пользователя, после чего запрос передается напрямую библиотеке Admin.dll, Author.dll или Shtml.dll. Далее библиотека DLL FPSE сверяет разрешения имитируемого администратора, автора или посетителя со списком ACL в корневой папке веб-сайта или страницы. При положительном результате проверки запрос обрабатывается; в противном случае клиенту FrontPage или браузеру передается сообщение "Доступ запрещен".
Разрешения на содержимое FrontPage-расширенного веб-сайта применяются ко всему веб-сайту, поэтому веб-разработчики имеют доступ ко всем страницам, а посетители могут их все просматривать. Разделите содержимое на сервере таким образом, чтобы различные группы пользователей имели разрешения на администрирование, разработку или просмотр различных областей содержимого посредством деления его на разделы.
Важно. Не включайте блокировку учетной записи в гостевой учетной записи интернета, так как это может привести к успешному выполнению атаки на отказ в обслуживании (DoS). Вместо этого обеспечьте устойчивый пароль учетной записи в целях предотвращения его взлома.
FrontPage обеспечивает полный доступ ко всем файлам для членов группы Administrators (Администраторы) и учетной записи SYSTEM. Разрешения на выполнение посетителями сайта, разработчиками и администраторами присваиваются всем папкам, помеченным исполняемым виртуальным корневым каталогом. Разрешение на выполнение устанавливается только в том случае, если в окне Properties (Свойства) расширенного с помощью FrontPage веб-сайта отмечена опция Allow Authors To
Списки ACL для FrontPage-расширенного веб-сайта приведены в таблице 11.1.
| Веб-папка или содержимое | Параметр ACL для папок или содержимого | Параметр для нового содержимого, создаваемого внутри папки |
|---|---|---|
| Папка верхнего уровня корневого каталога веб-сайта или страницы | Посетители: чтение, выполнение Авторы: чтение, выполнение, запись и удаление Администраторы: чтение, выполнение, запись, удаление и изменение разрешений | Посетители сайта: чтение Авторы: чтение, запись и удаление Администраторы: чтение, запись, удаление и изменение разрешений. |
| Папка веб-сайта в каталоге высшего уровня | Посетители сайта: чтение Авторы: чтение, выполнение, запись и удаление Администраторы: чтение, выполнение, запись, удаление и изменение разрешений | Посетители сайта: чтение Авторы: чтение, запись и удаление Администраторы: чтение, запись, удаление и изменение разрешений. |
| Исполняемая папка | Присвоение папке статуса исполняемой не влияет на текущий список ACL. | Присвоение папке статуса исполняемой предоставляет разрешения на выполнение посетителям сайта, авторам и администраторам в текущем списке ACL. |
| Папка, содержащая результаты форм | Если папка содержит группу обсуждения или результаты обработки информации базы данных, FrontPage присваивает разрешения на запись для посетителей сайта в текущем списке ACL. | Если папка содержит группу обсуждения или результаты обработки информации базы данных, FrontPage присваивает разрешения на запись для посетителей сайта в текущем списке ACL. |
| Папка FrontPage_vti_pvt | Посетители сайта: чтение, выполнение, запись, удаление Авторы: чтение, выполнение, запись, удаление Администраторы: чтение, выполнение, запись, удаление, изменение разрешений | Посетители сайта: чтение, запись, удаление. Авторы: чтение, запись, удаление. Администраторы: чтение, запись, удаление, изменение разрешений. |
| Папка FrontPage_vti_log | Посетители сайта: чтение, выполнение, запись, удаление Авторы: чтение, выполнение, запись, удаление Администраторы: чтение, выполнение, запись, удаление, изменение разрешений | Посетители сайта: чтение, запись, удаление. Авторы: чтение, запись, удаление. Администраторы: чтение, запись, удаление, изменение разрешений. |
| Папка FrontPage_vti_txt | Посетители сайта: чтение, выполнение, запись, удаление Авторы: чтение, выполнение, запись, удаление Администраторы: чтение, выполнение, запись, удаление, изменение разрешений | Посетители сайта: чтение, запись, удаление. Авторы: чтение, запись, удаление. Администраторы: чтение, запись, удаление, изменение разрешений. |
| Файлы содержимого | Посетители сайта: чтение Авторы: чтение, запись, удаление Администраторы: чтение, запись, удаление, изменение разрешений | |
| Файлы в папке, содержащей результаты форм | Добавляет разрешения на запись для посетителей сайта в текущий список ACL |
Совет. Если вы создаете базу данных (например, Microsoft Access) и связываете ее с FrontPage-расширенным веб-сайтом, сохраняйте ее в папке, созданной FrontPage, – _fpdb. FrontPage автоматически пометит эту папку как непросматриваемую, доступную для сценариев или исполняемую. Удостоверьтесь и в том, что применены механизмы безопасности, встроенные в базу данных или сервер базы данных, для ограничения пользователей, имеющих право обновлять содержимое базы данных. Как правило, учетные записи веб-авторов не требуют привилегий выше, чем запрос SELECT. Веб-авторам не следует разрешать обновление, вставку или удаление записей из базы данных. Эти задачи выполняются через внешний интерфейс базы данных.
FPSE позволяет создавать отдельные подсайты. Подсайт представляет собой законченный FrontPage-расширенный веб-сайт, который можно создать на любом уровне структуры содержимого, включая уровень, находящийся под другим подсайтом. Несмотря на то, что данные объекты при доступе через веб-веб-браузер выглядят как обычные подпапки, их можно полностью отделить от родительского веб-сайта. Если сайт содержит раздельные области содержимого, управление которыми осуществляется различными людьми, и нужно запретить авторам доступ ко всему содержимому сайта, используйте раздельные подсайты для сегрегации данных. Это позволит структуре содержимого веб-сайта соответствовать структуре предприятия; например, реализовывать для различных отделов управление только собственными областями данных на сайте. Так как каждый подсайт имеет свои настройки безопасности, безопасность может быть настроена на достаточно высоком уровне детализации параметров защиты. Например, автору FrontPage-расширенного веб-сайта не должно автоматически присваиваться разрешение на редактирование любых подсайтов.
Так как виртуальный сервер имеет свои собственные параметры безопасности и свой собственный список пользователей, создание виртуального сервера является способом ограничения доступа к веб-содержимому. Дополнительным преимуществом виртуальных серверов и подсайтов является потенциально более высокая производительность, так как время, необходимое для пересчета гиперссылок, прямо пропорционально числу и размеру документов, хранимых на одном веб-сервере.
Совет. Когда администратор устанавливает списки ACL для FrontPage-расширенного веб-сайта с помощью команды Permissions клиента, FrontPage выводит список учетных записей сервера по умолчанию. Можно создать ограниченный список пользователей и групп для каждого веб-сайта, расширенного при помощи FrontPage. Это предотвратит отображение полного списка учетных записей Windows. Обратитесь к документации FPSE и выясните, как это сделать.
Можно временно или постоянно удалить FrontPage 2002 Server Extensions с сервера IIS. Для временного удаления расширения используйте команду
Owsadm.exe –o fulluninstall –p <port>
Для временной деинсталляции FrontPage 2002 Server Extensions введите следующую команду в командной строке, заменив <port> номером порта указанного виртуального сервера:
Owsadm.exe –o uninstall –p <port>
Иногда информация, предоставляемая средствами командной строки, является очень скудной. Для проверки или настройки переменных конфигурации расширения сервера найдите их в реестре или в файле Service.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Shared Tools\Web server Extensions\All Ports.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\ Web server Extensions\Ports\<Номер порта>.Если переменная никогда не устанавливалась, она может не иметь записи в реестре. Конфликты настроек разрешаются в следующем порядке: переменные конфигурации подсайтов имеют высший приоритет, переменные конфигурации виртуальных серверов – средний приоритет, а переменные глобальной конфигурации – низший. Наиболее важные переменные описываются в последующих разделах.
При использовании FPSE не требуется доступ с открытием файлов для общего пользования на компьютере веб-сервера, а пользователям не нужен ни FTP, ни Telnet для управления своими веб-страницами, так как управление осуществляется через HTTP. Тем не менее, внимательно отслеживайте все уведомления безопасности Microsoft, чтобы быть в курсе появления новых уязвимых мест. Программа FrontPage 2002 Server Extensions улучшена по сравнению с предыдущими версиями, но вам следует ознакомиться с онлайновой справкой и разобраться в том, как управлять этими расширениями.
Установите значение AccessControl, равное 1; в противном случае каждый раз при создании подсайта любой пользователь получит права автора по отношению к этому подсайту, пока параметры доступа не будут настроены вручную.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 1 | Да | Да | Нет |
Установите значение AllowExecutableScripts на нуль, если не нужно помечать отдельные файлы как исполняемые.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 0 | Да | Да | Нет |
Если переменная NoExecutableCgiUpload установлена на ненулевое значение, FPSE не будет устанавливать бит исполняемого файла на сценарии CGI, отгружаемые автором на веб-сайт с помощью FrontPage. Это позволит веб-мастеру устанавливать разрешение Execute (Выполнение) вручную после проверки сценария. Если переменные NoExecutableCgiUpload и AllowExecutableScripts установлены на нуль, можно отгружать и выполнять файлы ASP и
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 1 | Да | Да | Нет |
Устанавливает самую раннюю версию клиента FrontPage, подключаемую к серверу.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| Любая версия | Нет | Нет | Да |
Если переменная NoMarkScriptable установлена на ненулевое значение, пользователи FrontPage не смогут изменять бит обработки сценариями на любых папках веб-сайта; это сможет делать только веб-мастер.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 0 | Да | Да | Да |
Ранние версии FrontPage позволяют обработчику форм по умолчанию (Save Results) передавать результаты формы по каналу любой случайно выбранной программе. Для обратной совместимости NoSaveResultsPipeTo отключает данную возможность при установке на ненулевое значение.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 1 | Да | Да | Нет |
Если значение переменной NoSaveResultsToAbsoluteFile установлено на 1, обработчик форм по умолчанию (Save Results), обработчик Registration (Регистрация) и Discussion (Обсуждение) не cмогут осуществлять запись в файл с абсолютным путем, даже если текущая учетная запись имеет права NTFS на запись данных по этому пути; обработчики форм смогут записывать только в файл, находящийся внутри области веб-содержимого.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 1 | Да | Да | Нет |
Чтобы запретить посетителям сайта просматривать каталог _private, установите переменную PrivateBrowsable на нуль. После установки этот параметр будет применяться ко всем создаваемым веб-страницам. Он не оказывает влияния на веб-страницы, созданные перед установкой данного параметра.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 0 | Да | Да | Нет |
Если значение параметра RequireSSL установлено на 1, серверные расширения потребуют соединение между клиентом FrontPage и сервером через протокол защищенных сокетов SSL.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 0 | Да | Да | Нет |
Если данный параметр установлен на ненулевое значение, то серверные расширения будут осуществлять поиск предопределенной группы Windows. Переменная RestrictIISUsersAndGroups не может быть установлена на уровне подсайта.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 0 | Да | Да | Нет |
Веб-роботы, также называемые "пауками" или веб-странниками, – это программы, автоматически исследующие всемирную сеть через рекурсивное получение страниц по гиперссылкам. Робот посещает сайты посредством запросов документов с этих сайтов и создает базу данных, которая используется поисковой машиной для нахождения документов, соответствующих строке поиска. Если сайт открыт для общего доступа, пользователи должны иметь возможность поиска сайта с помощью поисковой системы. Тем не менее, следует запретить роботам доступ к страницам сайта, особенно к тем, которые содержат важную информацию, так как это может привлечь внимание хакеров. Большая часть веб-роботов содержит два механизма ограничения областей сайтов, которые они будут посещать: протокол исключений роботов
Для указания разделов сайта, которые не должны посещаться роботом, создайте специально отформатированный файл с именем
Содержимое файла
User-agent: * Disallow: /scripts/ Disallow: /includes/ Disallow: /mike/
В этом примере роботы могут посещать все части сайта, кроме трех вложенных папок: scripts, includes и mike. Регулярные выражения не поддерживаются в строках User-agent или , однако звездочка ("*") в поле User-agent имеет специальное значение – "любой робот". Следовательно, нельзя вводить в файл такие строки: или . Укажите отдельную строку для каждой папки, которую нужно исключить из списка посещаемых роботом объектов. Нельзя включать в запись и пустые строки, так как они используются для разделения нескольких записей.
Ниже приведено несколько примеров того, как запретить роботам посещение всего сайта целиком или его отдельных частей.
Чтобы исключить всех роботов для всего сайта:
User-agent: * Disallow: /
Чтобы исключить всех роботов для отдельных папок на сайте:
User-agent: * Disallow: /scripts/ Disallow: /includes/ Disallow: /private/
Чтобы исключить одного робота:
User-agent: BadBot Disallow: /
Чтобы разрешить определенного робота:
User-agent: WebCrawler Disallow:
Так как в этом случае не может существовать поле "Allow" (Разрешить), то для исключения всех файлов, кроме одного, поместите эти файлы в отдельную подпапку (например, private), и перенесите один файл на уровень выше, чем данная папка, например:
User-agent: * Disallow: /corporate/private/
В качестве альтернативы можно явным образом запретить доступ робота к каждой странице:
User-agent: * Disallow: /corporate/private.html Disallow: /corporate/sensitive.html Disallow: /corporate/hr.html
Файл
Если несколько веб-разработчиков или подразделений одновременно управляют различными разделами сайта, то обновление файла
<HTML> <HEAD> <META NAME="robots" CONTENT="noindex,nofollow"> <META NAME="description" CONTENT="Данный документ рассказывает о …."> <TITLE>Внутренняя безопасность</TITLE> </HEAD> <BODY>
В содержимом META-тега роботов присутствуют директивы, разделяемые запятыми. В настоящий момент определены директивы INDEX, NOINDEX, FOLLOW и NOFOLLOW. Директива INDEX указывает, должен ли робот индексировать страницу. Директива FOLLOW указывает, должен ли робот переходить по ссылкам на странице для поиска других страниц. Директивами по умолчанию являются INDEX и FOLLOW. Значения ALL и NONE включают и выключают директивы: ALL=INDEX,FOLLOW и NONE=NOINDEX,NOFOLLOW.
Чтобы разрешить роботу индексирование и анализ страницы на предмет ссылок, добавьте следующий META-тег:
<META NAME="robots" CONTENT="index,follow">
или
<META NAME="robots" CONTENT="all=index.follow">
Остальные комбинации приведены ниже:
<META NAME="robots" CONTENT="noindex,follow"> <META NAME="robots" CONTENT="index,nofollow"> <META NAME="robots" CONTENT="noindex,nofollow">
Очевидно, что не следует указывать конфликтующие или повторяющиеся директивы, например:
<META NAME="robots" CONTENT="index,noindex,nofollow,follow">
.
Коммерческие сайты, особенно сайты электронной коммерции, требуют регулярного обновления информации о ценах на продукты, о специальных предложениях или нуждаются в интерактивных веб-страницах, структура которых зависит от запроса, полученного веб-сервером. Динамическое или
Динамическое содержимое обеспечивает успех сайта электронной коммерции, на страницах которого отображаются последние сведения о ценах и товарах, а пользователи ищут необходимые товары и сразу же приобретают их. Динамическое содержимое используется и в интрасети организации, публикующей внутренний перечень номеров телефонов. Если эти записи берутся из базы данных, все изменения, вносимые сотрудниками, немедленно отражаются в интерактивном перечне сразу после обновления базы данных, без редактирования страниц вручную.
В IIS при автоматическом
Администратору IIS необходимо реализовать доставку
CGI, ASP и Perl являются самыми распространенными технологиями, используемыми в IIS для обеспечения
Технология CGI представляет собой мощную систему, на компьютерах UNIX с ее помощью создается веб-содержимое в реальном времени. Однако каждое приложение является скомпилированной программой, и поэтому каждый раз после внесения изменений требуется перекомпиляция исполняемого файла. Для этого разработаны языки сценариев серверной части, интерпретируемые и исполняемые машиной сценариев с результирующими выходными данными, отправляемыми в приложение веб-сервера через CGI.
Сценарии CGI используются для расширения возможностей веб-серверов, чаще всего для обработки форм. Сценарий выступает в роли моста между ресурсом и сервером; ресурсом в данном случае является объект, обеспечивающий работу службы, например, программа электронной почты или база данных. Сценарий переводит предоставляемую ресурсом информацию в HTML-формат, чтобы сделать ее читабельной для запрашивающего браузера. Это расширяет возможности веб-сервера для обработки информации из всевозможных источников, расположенных на различных узлах.
Информация передается приложению CGI посредством указания имени приложения в адресе URL. Например:
<FORM ACTION=http://www.ваш_сервер.com/scripts/processorder.pl METHOD=POST>
Здесь URL указан в виде части тега FORM. После получения данных формы сервер ваш_сервер.com передаст управление приложению CGI (в данном случае это интерпретатор Perl, обозначенный файловым расширением .pl), которое обработает сценарий processorder.pl и запрос, после чего вернет страницу, созданную на базе полученных из формы данных.
IIS обеспечивает поддержку сценариев и программ CGI, однако предлагает более интегрированные технологии по работе с динамическим содержимым. IIS поддерживает интерфейс программирования серверных приложений
Страницей ASP является HTML-страница, содержащая один или более сценариев, обрабатываемых IIS перед передачей пользователю. ASP взаимодействует с IIS через
Совет. ASP также является сокращением от Application Service Providers (Поставщики услуг приложений). Они обеспечивают управление компьютерными услугами из удаленных центров через интернет или частную сеть.
ASP вызывает компоненты Component Object Model (COM) для обеспечения лучшей функциональности с помощью обработки ресурсов серверной части, однако эта возможность представляет угрозу безопасности. Следует отключить или удалить все ненужные для работы сайта компоненты COM, например, File System Object (Объект файловой системы), предоставляющий веб-приложениям доступ к жестким дискам. Для отключения File System Object выполните следующую команду:
regsvr32 scrrun.dll /u
Для получения более подробной информации о приложениях COM используйте апплет Component Services (Службы компонентов) из папки Administrative Tools (Администрирование).
Совет. Технология COM в интернете известна как ActiveX – программная архитектура, позволяющая создавать приложения из программных компонентов многоразового использования. Метод создания и использования компонентов формирует базу для высокоуровневых программных служб, таких как OLE (сокр. от object linking and embedding – связывание и внедрение объектов), обеспечивающих межпрограммное использование сценариев и передачу данных.
Серверная часть представляет собой ограниченный тип приложения CGI. На самом деле ASP распознает элементы #include для замещения этой инструкции содержимым другого файла. Следующая строка кода обеспечивает включение файла postalrates.inc в нужное место:
<!-- #include file="/includes/postalrates.inc" -->
Для обработки директивы #include используется библиотека ssinc.dll, а затем asp.dll интерпретирует всю страницу. Это очень удобно при повторном использовании нескольких строк кода на различных страницах. Microsoft рекомендует применять вставку файлов для облегчения работы с ним, так как в этом случае для изменения кода на нескольких страницах требуется изменение только одной. Однако при открытии файла вставки непосредственно в браузере злоумышленник получит доступ к исходному коду, так как файлы вставок не обрабатываются ASP. Для предотвращения этого следует либо связать файлы вставок с расширением .inc с ASP, либо переименовать их, указав расширения .asp, чтобы обеспечить выполнение всего кода сценариев и возврат в веб-браузер только результатов обработки. (Обратитесь к разделу "Совместимость с приложением" в этой лекции.)
IIS поддерживает пять директив
#config #echo #fsize #flastmod #exec
Нельзя применять эти директивы на странице ASP. Вместо этого используйте одно из специальных расширений HTML, по умолчанию настроенных на употребление директив #exec должна быть отключена, так как она позволяет выполнять программы командной строки или CGI в контексте веб-сервера в отдельном пространстве памяти. IIS по умолчанию отключает эту директиву, но следует убедиться, что следующий параметр реестра установлен на нуль (или отсутствует): HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\ Parameters\SSIEnableCmdDirective.
Технология ActivePerl разработана фирмой ActiveState и доступна бесплатно на сайте http://www.activeperl.com/. Perl является популярным языком программирования, в особенности среди разработчиков для платформы UNIX. Windows-версия ActivePerl обеспечивает дополнительные возможности платформы IIS – PerlScript и Perl для
ASP взаимодействует с IIS через
В отличие от большинства версий Perl PerlScript позволяет внедрять теги сценариев непосредственно в веб-страницу, аналогично VBScript в страницах ASP. При установке ActivePerl выберите инсталляцию Perl для
.
В лекции 4 говорилось о настройке разрешений Windows NTFS для веб-сайтов, папок и отдельных файлов для контроля доступа пользователей к веб-содержимому. Вместо установки разрешений на каждый файл легче и безопаснее создать папки для файлов определенных типов, например, для статического содержимого или сценариев. Хорошо продуманная структура каталогов веб-сайта упрощает управление разрешениями веб-содержимого, так как они устанавливаются на уровне папки. Для стандартного веб-сайта создайте следующие папки (см. лекцию 3).
| Папка | Содержимое | Типы файлов | Путь |
|---|---|---|---|
| static | Статическое содержимое, сценарии клиентской части | .htm, .html, .js | D:\my_website\static |
| include | Файлы вставок | .inc | D:\my_website\include |
| content | Файлы сценариев | .asp | D:\my_website\content |
| live | Исполняемые файлы | .exe, .dll, .cgi, .pl | D:\my_website\live |
| images | Файлы изображений | .gif, .jpg | D:\my_website\images |
Такая структура сайта не обязательно является образцом для веб-дизайнеров, однако с точки зрения безопасности мы рекомендуем именно этот подход.
Важно. На разрабатываемом сервере используйте неинформативные имена папок со сценариями и исполняемыми файлами.
После создания папок для веб-содержимого установите разрешения для каждой папки. Ниже приведены рекомендуемые настройки разрешений NTFS для структуры папок:
| Папка | Доступ гостевой учетной записи интернета (IUSR_имя-компьютера) | Доступ администраторов | Доступ системы |
|---|---|---|---|
| static | Чтение | Полный | Полный |
| include | Чтение | Полный | Полный |
| content | Чтение | Полный | Полный |
| live | Нет | Полный | Полный |
| images | Чтение | Полный | Полный |
Для разрешения выполнения сценариев на сервере нужно настроить параметры приложения IIS на главном уровне, уровне сайта или уровне
В консоли Internet Services Manager (Диспетчер служб интернета) значок коробки (см. рис. 11.1) означает стартовую точку приложения с подкаталогами, являющимися частью приложения.
Веб-сайт по умолчанию, созданный при установке IIS, представляет собой стартовую точку приложения или корень приложения (см. рис. 11.2). Используйте Internet Services Manager (Диспетчер служб интернета) для назначения каталога стартовой точке приложения. Для этого откройте окно главных свойств, веб-свойств или свойств виртуального каталога щелчком правой кнопкой мыши на соответствующем объекте в

(рис 11.2) Приложение evaluator является стартовой точкой веб-сайта(рис 11.1) Веб-сайт по умолчанию является стартовой точкой приложения
Если сайт состоит только из статического содержимого, убедитесь в том, что в ниспадающем меню Execute Permissions (Разрешения на выполнение) выбран параметр None (Нет) в окне Default Web Site Properties (Свойства веб-узла по умолчанию). Для разрешения выполнения связанного со сценариями приложения (например, ASP) выберите параметр Scripts Only (Только сценарии). Не выбирайте опцию Scripts And Executables (Сценарии и исполняемые файлы), если на сервере не нужно выполнять исполняемые файлы.
Существует разница между разрешениями веб-сервера и разрешениями NTFS. Разрешения веб-сервера применимы ко всем пользователям, осуществляющим доступ к сайту.
Разрешения NTFS применяются только к определенному пользователю или группе пользователей с корректными учетными записями Windows, они определяют доступ к физическим каталогам на сервере; веб-разрешения управляют доступом к виртуальным каталогам на веб-сайте. Они применяются ко всем пользователям независимо от их прав доступа. Например, установка разрешения Read (Чтение) на виртуальный каталог позволяет его просматривать, если разрешения NTFS не налагают ограничения на этот просмотр.
По умолчанию учетная запись анонимного пользователя (IUSR_имя-компьютера) наделяется разрешениями NTFS для папок, из которых состоит веб-сайт. Если веб-разрешения и разрешения NTFS для каталога или файла отличаются, то используются параметры с большей степенью ограничения.
IIS предоставляет три возможных процесса для выполнения приложения.
Они обеспечивают различные уровни защиты. При возникновении ошибки в приложении процесс, в котором оно выполняется, перестает отвечать на запросы. По умолчанию inetinfo.exe выполняется в своем собственном процессе, а другие приложения – в одном и том же объединенном процессе. Необходимо найти оптимальное соотношение между производительностью и уровнем защиты приложения. Приложения, выполняющиеся в веб-службах, обрабатывают результат с большей производительностью, но и с большей вероятностью того, что неправильно функционирующее приложение сделает недоступными веб-службы. Следовательно, inetinfo.exe выполняется в собственном процессе, жизненно важные приложения – в своих процессах (высокий уровень безопасности), остальные приложения – в объединенном процессе (средний уровень безопасности).
Для вызова нужного интерфейса
Связи с приложением устанавливаются в стартовой точке приложения на вкладке App Mappings (Связь с приложениями) окна Application Configuration (Настройка приложения). Выполните следующие действия.
(рис 11.4) Убедитесь в том, что установлены связи только с теми приложениями, которые используются IIS(рис 11.3) Обеспечьте выполнение кода, содержащегося в файлах вставки, перед отправкой клиенту, установив связь файлов .INC с ASPСовет. Обратитесь к разделу "Инструмент безопасности URLScan" в этой лекции для получения подробной информации о том, какие команды необходимо разрешать для работы отдельных приложений.
Для удаления связи с приложением выберите расширение файла на вкладке App Mappings (Связь с приложениями) и нажмите на кнопку Remove (Удалить).
Для предотвращения случайного изменения файлов веб-разработчиками необходимо контролировать исходные файлы. Например, если файл вставки удален или перемещен без страниц, которые обновлялись с использованием этого файла, то при доступе к этим страницам возникнет ошибка, и откроется доступ к информации о системе.
Контролируя доступ на запись веб-содержимого, управление исходными файлами исключает единовременное редактирование одного и того же файла двумя пользователями, а также удаление и
В программах контроля над исходными файлами используется система приписки и отписки файлов, аналогичная системе выдачи и приема книг в библиотеке. Если файл занят пользователем, то его больше никто не может использовать или редактировать, пока он не будет освобожден. Если файл не приписан для редактирования, его никто не сможет изменить. В
Программное обеспечение, предназначенное для контроля над исходными файлами, можно интегрировать с IIS, если установлены серверные расширения FrontPage Server Extensions (FPSE). FPSE представляет собой набор программ и сценариев, поддерживающих разработку в FrontPage (популярный редактор веб-страниц от Microsoft) и расширяющих функциональные возможности IIS. Для установки FPSE прочтите раздел "Серверные расширения FrontPage" далее в этой лекции. Не рекомендуется устанавливать FPSE на веб-серверах.
Если расширения FPSE установлены, включите контроль версий файлов.
Программа Visual SourceSafe (см. рис. 11.6) представляет собой приложение уровня предприятия для контроля над изменением исходных файлов; она дополнительно обеспечивает отслеживание версий и функции отката. Для получения информации об интеграции Visual SourceSafe с программой FrontPage обратитесь к разделу "Контроль исходных файлов серверных расширений" в Microsoft FrontPage Server Extensions Resource Kit.
(рис 11.6) Программа Microsoft Visual SourceSafe сохраняет файлы проектов в базе данных, позволяя открывать старые версии изменяемых файловFrontPage предоставляет два метода контроля над исходными файлами: встроенную упрощенную
В зависимости от используемого средства разработки проверьте, не засорена ли система файлами .
Иногда в интернете попадаются сайты с предупреждениями о том, что копирование содержимого сайта запрещено. Часто для защиты авторских прав используются скрываемые панели инструментов веб-браузера и панели инструментов перехода, а также сценарии JavaScript, отключающие всплывающие меню. Тем не менее, для опытных пользователей эти методы защиты авторских прав являются не только раздражающими, но и легко преодолимыми при помощи целого ряда способов.
Совет. Если вы добавляете в свой код уведомление об авторских правах, то в любом судебном процессе это облегчит доказательство того, что результат вашего труда был скопирован нелегально. Для получения дополнительной информации обратитесь к разделу "Кодировщик сценариев" далее в этой лекции.
Следует всегда добавлять строку уведомления об авторских правах внизу каждой веб-страницы. Например, "© 2002, ваше_имя/компания. Все права защищены". Эту строку можно добавить, выбрав опцию Enable Document
(рис 11.7) Введите полный путь к файлу нижнего колонтитула или нажмите на кнопку Browse (Обзор) и найдите его в дереве каталогов.
Наиболее часто встречающимся недостатком сценариев, используемых для генерирования динамического содержимого, является обработка вводимых пользователем данных (например, данных формы) без их проверки. При вводе некорректных данных хакерам, их отправившим, открывается возможность для выполнения ряда атак. Любой сайт, осуществляющий прием данных от пользователя, подвержен атакам, если получаемые данные не проверяются перед их обработкой.
В языке HTML для отличия текста от тегов разметки используются некоторые символы. Например, символ "меньше чем" ("<") означает начало тега HTML. Когда веб-браузер считывает символ "<", он осуществляет поиск корректного тега HTML, располагающегося после этого символа. Если на странице HTML требуется отобразить сам символ "<", разработчику нужно заменить "<" на <.
Теги могут либо управлять форматом содержимого страницы, либо представлять программу для выполнения (например, тег <SCRIPT> представляет код различных языков сценариев). Хакер может вставить в поле формы вредоносный код вместо ожидаемого содержимого. Например, вместо указания адреса электронной почты в гостевой книге веб-сайта ввести следующий код:
<A HREF=http://www.плохой_сервер.com/scripts/вредоносный.asp>Щелкните здесь – специальное предложение</A>.
Если код не будет проверен, то сценарий возвратит эти данные каждому пользователю, просматривающему комментарии посетителей в гостевой книге, и отобразит гиперссылку: "Щелкните здесь – специальное предложение". Пользователь, щелкнувший на этой ссылке, перенаправится на сайт www.плохой_сервер.com. Все будет выглядеть так, будто вредоносный код поступил с вашего сайта. При отправке и отображении вредоносного сценария (так называемая "подстановка сценариев") хакер потенциально может захватить управление сайтом.
Непроверенные введенные данные могут вызывать, например, нарушение целостности данных, установку и считывание элементов cookie и перехват вводимых пользователем данных. Принимая во внимание огромное количество пробелов в безопасности, создаваемых непроверенными данными на общем веб-сервере, удивительно, что на большинстве сайтов до сих пор отсутствует проверка данных перед их обработкой. Если ваши сценарии принимают данные от пользователей интернета, обеспечьте их проверку, кодирование и фильтрацию символов со специальным значением, чтобы они не воспринимались как код HTML.
Вводимыми данными называются данные, передаваемые сценариям для обработки; они обычно поступают из веб-формы, из базы данных или из другого источника. Фильтрация ввода работает посредством удаления специальных символов из вводимой информации, которые позволяют генерировать сценарий в потоке данных HTML. Ниже приведены специальные символы:
< > " ' % ; ) ( + -
Конкретная ситуация может потребовать фильтрацию дополнительных символов, помимо указанных.
IIS передает данные, отправленные
function ValidateFormData(form) {
var theNumber = form.Telephone.Value;
var valid = true
var GoodChars = "0123456789()-+ "
var i = 0
if (theNumber =="") {
// Возврат значения "ложь" при отсутствии номера телефона
valid = false
}
for (i =0; I <= theNumber.length -1; i++) {
if (GoodChars.indexOf(theNumber.charAt(i)) == -1) {
alert(theNumber.charAt(i) + "является некорректным символом.")
form.Telephone.focus();
valid = false
}
}
return valid
}
Данные, введенные в поле формы ValidateFormData в методе onSubmit формы следующим образом:
<FORM ACTION="scripts/process.asp" METHOD="POST" onSubmit="return ValidateFormData(this);">
Следующий фильтр, написанный на JavaScript, является примером того, как следует удалять специальные символы:
function RemoveBadChars(strTemp) {
strTemp = strTemp.replace(/\<|\>|\"|\'|\%|\;|\(|\)|\|\+|\-/g,"");
return strTemp;
}
Еще одним способом контроля вводимых данных является указание предельного размера данных в полях ввода; это ограничение устанавливается добавлением атрибута MAXLENGTH в теги ввода текста. Например, если поле предназначено для ввода восьмизначного числа, следует ограничить вводимые пользователем данные:
<input type="text" name="ordernumber" MAXLENGTH="8">
Такая блокировка усложняет хакеру задачу по вводу вредоносного кода. Тег <applet></applet> или <script></script> сам по себе занимает 17 символов.
Проверка клиентской части вводимых данных предотвращает их ненужную обработку, если пользователь допустил ошибку. Однако эта проверка не является столь же функциональной, как проверка серверной части. При использовании сценариев для получения вводимых данных <TEXT> из формы HTML их тип неизвестен, и некоторые символы, в обычной ситуации отбрасываемые фильтром, могут оказаться приемлемыми.
Если сценарий предназначен для обработки информации из базы данных, нельзя по умолчанию предполагать, что эти данные являются корректными. При контроле ввода информации в базу данных следует использовать проверку корректности в точке ввода данных. Эта проверка является составляющей частью качественно реализованной базы данных.
Элементы управления проверкой ASP.NET. Так как проверка вводимых пользователем данных очень важна с точки зрения безопасности, ASP.NET (последняя версия ASP от Microsoft для платформы .NET) обеспечивает
В примере фрагмент кода веб-приложения ASP.NET обеспечивает ввод пользователем правильного адреса электронной почты; проверка выполняется элементом управления RegularExpressionValidator. При отправке данных формы содержимое поля адреса электронной почты проверяется на соответствие регулярному выражению, и если соответствие не подтверждается, пользователь получает сообщение об ошибке.
E-mail Address: <BR> <input id=txtEmail type=text size=35 MAXLENGTH=35 runat=server/> <asp:RegularExpressionValidator ID=valEmailAddress ControlToValidate=txtEmail ValidationExpression=".*@.*\..*" ErrorMessage="Введен неправильный адрес электронной почты." Display=None EnableClientScript=true Runat=server/>
При передаче адреса электронной почты неправильного формата отображается содержимое ErrorMessage. ASP.NET предоставляет целый набор подобных элементов управления, связанных с безопасностью. В случае переноса сайта на ASP.NET разработчики должны уметь применять эти дополнительные меры безопасности в коде, с которым они работают.
Сценарий должен проверять и очищать данные перед их обработкой, что обеспечит удаление всех некорректных данных и правильное выполнение кода. Очень важно реализовать проверку серверной части, так как некоторые данные передаются внутри самого URL, который не проверяется на клиентской части. Для проверки данных используются и более мощные алгоритмы. Язык сценариев VBScript версии 5.0 и выше работает с регулярными выражениями с целью фильтрации и очистки входящих данных. Посредством создания шаблонов, соответствующих конкретным строкам, осуществляется поиск и замена введенных пользователем данных для проверки их на наличие черт вредоносного характера. Синтаксис шаблона VBScript заимствован из языка Perl.
Следующий пример кода выполняет удаление всех символов, не лежащих в диапазонах 0 – 9, a – z, A – Z и не являющихся пробелом, из строки strTainted:
<% Set reg = New RegExp Reg.Pattern = "\W+" strTainted = reg.Replace(strTainted, "") %>
. Общая информация о сценариях Windows находится по адресу http://msdn.microsoft.com/scripting/.
При запросе сценарием информации из базы данных, скорее всего, осуществляется сохранение процедуры. Общий объем данных, переданных сохраненным процедурам, не должен превышать установленный максимум. Все отправляемые запросы нужно проверить на превышение максимально допустимого размера.
Данные, передаваемые базе данных, должны проходить фильтрацию. Злоумышленник в запросах SQL может отправить групповые символы ("%" и "_"), разрешенные в выражениях SQL, и получить все записи из таблицы SQL. Осуществляйте фильтрацию этих символов в любых вводимых пользователем запросах к базе данных.
IIS передает документ HTML веб-браузеру в виде потока байтов, а браузер воспринимает их как последовательность символов. Для правильного отображения этого потока все HTML-страницы и страницы с
При фильтрации вводимых пользователем данных следует указать набор символов, используемый на веб-страницах, для обеспечения фильтрации специальных символов. Необходимо установить кодировку для каждой страницы и разрешить передачу заведомо безопасных символов, а не исключать небезопасные символы. Так как постоянно разрабатываются новые браузеры и языки сценариев, нельзя быть на сто процентов уверенным в том, что учтены все возможные комбинации символов, представляющие опасность для системы.
Чтобы установить кодировку символов на веб-странице, необходимо включить в код страницы тег МЕТА, который должен стоять как можно выше в коде страницы, по возможности сразу после тега <HEAD>. В этом примере веб-браузер будет использовать для отображения страницы кодировку ISO-8859-1:
<html> <head> <META http-equiv="Content-Type" content="text/html; CHARSET=ISO-8859-1"> <title>Safer HTML</title> </head>
Широко используемыми в интернете кодировками являются: ISO-8859-1, называемая
Все входные данные нужно кодировать при записи в виде HTML. Этот подход частично эффективен для тех данных, которые нельзя быстро проверить при вводе. Представьте себе, что в базе данных отсутствует контроль над процессом ввода информации. Недовольный зарплатой сотрудник организации может ввести вредоносный код в поле базы данных, который отобразится при вызове из сценария. Большая часть языков сценариев содержит функцию кодировки, например, методы объекта сервера ASP HTMLEncode и URLEncode. Разработчики должны помнить об этой форме кодировки серверной части и применять ее в тех местах, где это требуется. Такой подход аналогичен фильтрации за исключением того, что здесь кодируются данные, записываемые для отправки клиенту. Более подробная информация об обработке вводимых данных расположена на сайте
Убедитесь, что разработчики выполняют следующие девять правил при создании динамического содержимого для сервера IIS.
AUTOCOMPLETE=OFF в тег <FORM> или <INPUT> всех форм, используемых для запроса паролей. Например: <INPUT TYPE=password NAME=Password SIZE=16 MAXLENGTH=16 AUTOCOMPLETE=OFF><SCRIPT Language="JavaScript">
<!--
window.setTimeout("window.navigate('Logoff.asp')", 300000);
//--></SCRIPT>
Пользователи будут перенаправляться на страницу Фильтры
Важно. Если вы заключаете контракт со сторонними разработчиками для построения интранет-сайта или веб-сайта, или если на сервере используются готовые библиотеки
ISAPI DLL, обратитесь к заметке "Проверки сторонних программ" в лекции 9.
URLScan представляет собой средство безопасности, работающее вместе с программой IIS Lockdown (см. лекции 3) и обеспечивающее отключение ненужных функций и ограничение типов HTTP-запросов, обрабатываемых IIS. Как и фильтр
Окно Properties (Свойства) фильтров
(рис 11.8) Указанные фильтры ISAPI выполняются для всех веб-сайтов, расположенных на сервереСовет. При добавлении фильтров для веб-сайта в окне Properties отобразятся только фильтры, установленные для данного веб-сайта, несмотря на то, что могут существовать глобальные фильтры, наследуемые из главных настроек веб-сервера.
Нажмите на кнопку Add (Добавить) и введите название фильтра в поле Filter Name (Имя фильтра). Найдите файл
После добавления или изменения глобального фильтра необходимо остановить и перезапустить веб-сервер, чтобы загрузить новые фильтры в память. Фильтр, добавляемый на уровне веб-сайта, автоматически загружается после добавления.
Большая часть сценариев JavaScript включается в веб-страницы или содержится в файле JavaScript (.js), и код сценариев доступен каждому пользователю, который просматривает исходный код файла. Как правило, это не представляет серьезной проблемы, однако что делать, если вы разработали свои собственные сценарии JavaScript, которые не должны быть доступны для просмотра? В этом случае следует использовать фильтр
Отслеживая уведомления OnUrlMap, фильтр
Важно. Никогда не включайте системные пароли в сценарии. В этом случае пароли будут доступны для чтения любому разработчику и выявлены при нарушении безопасности сайта.
Одним из недостатков использования сценариев является то, что любые алгоритмы и код собственной разработки видны любому пользователю, которому разрешено редактировать файл, так как они хранятся в виде обычного текста. Этот недостаток в защите
После того как сценарий закодирован, изменение любой части результирующего файла сделает его недействительным, что обеспечит его целостность. Клиенты, для которых разработан код, не смогут его изменять, что значительно упрощает решение проблем, связанных с ошибками, так как в данном случае вы будете уверены в том, что код не был изменен. Данная мера не предотвратит доступ хакера к коду, однако определенно нарушит планы большинства не слишком осведомленных пользователей. Сразу после отладки и
Следующий пример кода на языке VBScript демонстрирует использование маркера для кодирования всего кода, кроме сообщения об авторских правах:
<SCRIPT LANGUAGE="VBScript"> 'Copyright© 2002. Ваша компания. Все права защищены. '**Start encode** Код вашей собственной разработки расположен здесь </SCRIPT>
При выполнении кодировщика сценариев весь текст сценария до стартового маркера не кодируется, а данные, находящиеся после маркера, будут закодированы. По завершении процесса кодирования указатель языка в теге <SCRIPT> сменится на
<SCRIPT LANGUAGE="VBScript.Encode" >
Некоторые из динамических элементов веб-содержимого могут быть секретными или разрешенными для доступа только тем пользователям, которые зарегистрировались для использования предоставляемой услуги. Можно контролировать доступ к таким страницам посредством создания списков контроля доступа (ACL) и учетных записей Windows. Но такой подход не применишь на сайте, связанном с электронной коммерцией, так как у него будут тысячи пользователей. Посредством использования сценариев легко осуществляется контроль доступа к страницам без создания учетных записей пользователей Windows.
Этот тип контроля доступа легко реализуется с использованием ASP. Следующий код демонстрирует, как создать страницу входа пользователей для аутентификации зарегистрированных клиентов сайта, после которой они получат доступ к странице со специальными предложениями. Пользователь, не прошедший аутентификацию, будет перенаправлен на другую страницу.
<HTML> <HEAD> <TITLE>Customer Log On</TITLE> </HEAD> <BODY> <FORM METHOD="POST" ACTION="../scripts/logon.asp"> <TABLE WIDTH="100%"> <TR> <TD>User name:</TD> <TD><INPUT TYPE="text" NAME="Username" SIZE="30" MAXLENGTH="30"></TD> </TR> <TR> <TD>Password:</TD> <TD><INPUT TYPE="password" NAME="Password" SIZE="16" MAXLENGTH="16"></TD> <TR> <TD COLSPAN="2" align="CENTER"><INPUT TYPE ="submit" VALUE="Log On"></TD> </TR> </TABLE> </FORM> </BODY> </HTML>
Данные, введенные в форме, передаются странице logon.asp в папке scripts с помощью действия POST. Если содержимое, к которому осуществляется доступ, является особо секретным, например, содержит информацию о кредитных картах или учетных записях, данные входа и любое секретное содержимое должны передаваться через соединение SSL. Сценарий logon.asp сверяет имя пользователя и пароль с информацией, находящейся в базе данных зарегистрированных пользователей. В случае соответствия сценарий logon.asp устанавливает сеансовую переменную и направляет клиента на страницу со специальными предложениями. Если соответствующей информации в базе данных не обнаруживается, это означает, что пользователь еще не зарегистрирован, и происходит его перенаправление на страницу регистрации.
If NoMatch = TRUE Then
Session("Authorized") = FALSE
strURL = "registrationpage.asp"
Else
Session("Authorized") = TRUE
strURL = "specialoffers.asp"
End If
Server.Transfer strURL
Теперь у нас есть сеансовая переменная, которая используется для проверки того, успешно ли пользователь вошел на сайт. С помощью этой проверки в начале каждой страницы с контролируемым доступом обеспечивается доступность страниц только для зарегистрированных пользователей, вошедших в систему.
<%@ LANGUAGE="VBScript" %>
<% Option Explicit %>
<%
If Session("Authorized") = FALSE Then
Response.Redirect "accessdenied.asp"
End If
%>
Всякий пользователь, попытавшийся осуществить доступ к такой странице и не прошедший аутентификацию, будет перенаправлен на страницу accessdenied.asp. На этой странице можно разместить сообщение о том, что пользователь не зарегистрирован, и предложение пройти процедуру регистрации.
Важно. Всегда используйте метод POST для отправки секретной информации из формы. При использовании метода GET введенные в форме данные будут отображаться в адресе URL, который видит каждый пользователь.
Файловая система с шифрованием (
(рис 11.9) Обеспечьте шифрование содержимого папки, включив соответствующую опцию в окне Proрerties (Свойства)Нажмите на кнопку Advanced (Дополнительно) и отметьте опцию Encrypt Contents To Secure Data (Шифровать содержимое для защиты данных) (см. рис. 11.10). Нажмите на OK, чтобы вернуться в Windows Explorer.
После обеспечения шифрования папки можно работать с ней и находящимися в ней файлами, как с любыми другими файлами и папками, поскольку процесс шифрования прозрачен для пользователя. Тем не менее, любой злоумышленник, который попытается открыть, скопировать, переместить или переименовать зашифрованные файлы, получит сообщение об отказе в доступе.
(рис 11.10) Диалоговое окно Advanced Atributes (Дополнительные атрибуты) позволяет включить шифрование файла или папкиПредупреждение.
EFS не сможет шифровать файлы с атрибутом System (Системный). Не пытайтесь преодолеть эту меру защиты для шифрования файлов в системной папке. Секретные ключи, необходимые для расшифровки, недоступны при загрузке системы, поэтому если системные файлы будут зашифрованы, система окажется в нерабочем состоянии.
Итак, каким же образом используется
Важно. При использовании
EFS следует шифровать папки, а не отдельные файлы, так как приложения создают временные файлы в тех же папках, где находятся исходные, особенно в процессе редактирования. При использовании шифрования на уровне папки временные файлы не будут сохраняться в виде открытого текста. По этой же причине следует применить шифрование к папке Temp, расположенной по адресу %SystemRoot%\TEMP.
При поиске в интернете встречаются ссылки на страницы, сгенерированные поисковой системой, которые вызывают ошибку времени выполнения сценария. Причина ошибки заключается в некоторых сведениях, нередко содержащих используемую сценарием информацию, например, данные о структуре бизнеса или расположении базы данных. Это значит, что страница со сценарием не была достаточно протестирована перед публикацией в интернете. Если сценарии, генерирующие ошибки, публикуются в интернете не полностью отлаженными, основные поисковые системы смогут выводить о них некоторые данные.
Например, при поиске в системе Altavista (http://www.altavista.com) по строке "Microsoft VBScript
Подобная утечка информации о системе чрезвычайно полезна для хакера при планировании атаки на сервер. Мы уже говорили о важности связывания файлов вставок с ASP, однако следует убедиться в том, что веб-разработчики качественно отлаживают все страницы со сценариями в автономном режиме перед их публикацией на действующем сервере. Следует также выполнять поиск в интернете собственных страниц для определения корректности их отладки, после чего удалять или переименовывать их в случае ошибок.
Обычно веб-разработчики ограничены во времени и, как правило, ставят на первое место внешний вид, удобство работы и функциональность, а о безопасности думают далеко не в первую, если не в последнюю, очередь. В лекции 9 говорилось о том, что такой подход недопустим при разработке содержимого для интернета. Разработка и тестирование должны проводиться в автономном режиме для успешного устранения всех угроз безопасности создаваемых сценариев, а это возможно при таком выполнении сценария, когда семантические ошибки программирования выявляются сами по себе.
Синтаксические ошибки находить легко, так как программный компилятор или интерпретатор прерывает выполнение кода и обозначает строку с синтаксической ошибкой. Плохо обученный разработчик исправит свои синтаксические ошибки, после чего отгрузит новый код, уверенный в отсутствии ошибок. Однако семантические ошибки или ошибки времени выполнения могут возникнуть во время непосредственного выполнения программы, что позволяет выявить исходный код любым пользователем, запустившим сценарий. Например, при добавлении шестого товара в корзину покупок электронного магазина произойдет семантическая ошибка, если максимальное число товаров для покупки, установленное в программе, равно пяти.
Необходимо, чтобы код разрабатывался программистами с учетом аспектов безопасности. При написании безопасных программ следует проверять наличие файла перед его открытием, а также правильность вводимых значений. Код должен тестироваться посредством ввода различных значений, среди которых есть корректные значения, значения, являющиеся пограничными (т.е. находящиеся на границе между допустимыми и недопустимыми значениями), а также некорректные значения. Такое тестирование предотвратит большую часть ошибок, возникающих из-за вводимых пользователем данных.
Поскольку идеально написанного кода не существует, необходимо обеспечить поддержку
Следующий код VBScript фиксирует любые возникающие ASP-ошибки в файле журнала, а также выводит сообщение для пользователя. Эти действия предотвращают отображение исходного кода страницы, вызвавшей ошибку. Этот код можно модифицировать на передачу информации об ошибке по электронной почте веб-мастеру.
<%LANGUAGE="VBSCRIPT" %>
<% Option Explicit %>
<%
' Предотвратить прерывание выполнения данной страницы дальнейшими ошибками
On Error Resume Next
Dim objASPError 'Объект ошибки
Dim strErrNumber, strASPCode
Dim strErrDes, strASPDes
Dim strCategory, strFileName
Dim strLineNumber, strColNumber
Dim strSourceCode, strErrorMsg
Dim strErrorLog, strReferrer 'Строки
Dim lngColNum 'Длина
Dim objFSO 'Объект файла
Dim objTStream
DimblnLogFail 'Boolean
'Установка ссылки на объект ASPError
Set objASPError = Server.GetLastError()
‘Сохранение значений свойств объекта ASPError
strErrNumber = CStr(objASPError.Number) 'Код обычной ошибки
strASPCode = objASPError.ASPCode 'Код ошибки ASP
If Len(strASPCode) Then
strASPCode = "'" strASPCode "'"
Else
strASPCode = ""
End If
strErrDes = objASPError.Description
strAspDes = objASPError.ASPDescription
strCategory = objASPError.Category 'Тип ошибки
strFileNAme = objASPError File 'Файл, вызвавший ошибку
strLineNumber = objASPError.Line 'Номер строки в файле
strColNumber = objASPError.Column 'Номер столбца в строке
If IsNumeric(strColNumber) Then 'Преобразовать в целое число
lngColNumber = CLng(strColNumber)
Else
lngColNumber = 0
End If
strSourceCode = objASPError.Source 'Исходный код строки с ошибкой
'Создание сообщения об ошибке
strErrorMsg = "ASP Error " strASPCode "occurred on " Now
If Len(strCategory) Then
strErrorMsg = strErrorMsg " in " strCategory
End If
strErrorMsg = strErrorMsg vbCrlf "Error number: " strErrNumber _
" (0x" Hex(strErrNumber) ")" vbCrlf
If Len(strFileName) Then
strErrorMsg = strErrorMsg "File: " strFileName
If strLineNumber > "0" Then
strErrorMsg = strErrorMsg ", Line " strLineNumber
If lngColNumber > 0 Then
strErrorMsg = strErrorMsg ", Column " lngColNumber
If Len(strSourceCode) Then
strErrorMsg = strErrorMsg vbCrlf strSourceCode vbCrlf _
String(lngColNumber – 1, "-") "^"
End If
End If
End If
strErrorMsg = strErrorMsg vbCrlf
End If
strErrorMsg = strErrorMsg strErrDes vbCrlf
If Len(strAspDes) Then
strErrorMsg = strErrorMsg "ASP reports: " strAspDes vbCrlf
End If
'Зафиксировать ошибку в файле журнала.
'Изменить путь к файлу журнала для конкретной системы.
'Нужно присвоить учетной записи IUSR_имя-компьютера разрешение на
'запись и изменение файла.
strErrorLog = "D:\temp\custom_error.log"
set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objTStream = objFSO.OpenTextFile(strErrorLog, 8, True) '8 = ForAppending
If Err.Number = 0 Then
objTStream.WriteLine strErrorMsg vbCrlf
End If
If Err.Number = 0 Then
objTStream.Close
blnLogFail = False
Else
blnLogFail = True
End If
'Вывод сообщения в веб-браузере.
%>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<HTML>
<HEAD>
<TITLE>Error</TITLE>
</HEAD>
<P>К сожалению, запрошенная вами страница содержит ошибку и не может быть отображена.</P>
<%
'Добавить ссылки для возврата на предыдущую или домашнюю страницу.
strReferrer = Request.ServerVariables("HTTP_REFERER")
If Len(strReferrer) Then
Response.Write "<p><A HREF=""javascript:history.go(-1)"">Вернуться на предыдущую страницу</A></P>
End IF
Response.Write "<P>Возврат на <A HREF=""http://www.ваш_домен.com""> домашнюю страницу</A></P>
%>
</P>
<P>Пожалуйста, обратитесь к
<A HREF="mailto:webmaster@ваш_домен.com">веб-мастеру</A>
для выяснения причин возникновения данной проблемы</P>
</BODY>
</HTML>
Обработка ошибок устанавливается на главном уровне, веб-уровне или уровне каталога посредством изменения
Для настройки IIS на отображение сообщения об ошибке откройте консоль Internet Services Manager (Диспетчер служб интернета) и щелкните правой кнопкой мыши на нужном сервере или веб-сайте. Выберите команду Properties (Свойства), откройте вкладку Custom Errors (Другие ошибки) и прокрутите вниз список сообщений об ошибках, чтобы отобразить HTTP Error 500;100 (см. рис. 11.11).
Нажмите на кнопку Edit Properties (Изменить параметры) для изменения параметров сообщения об ошибке, указав созданную или измененную страницу с текстом уведомления (см. рис. 11.12).
Совет. Убедитесь, что файл обработки ошибок не содержит синтаксических ошибок или ошибок времени выполнения; если в коде присутствуют ошибки, они отобразятся в веб-браузере. Строка 5 приведенного выше кода On Error Resume Next обеспечивает выполнение файла без возникновения ошибок.

(рис 11.12) Измененные страницы с информацией об ошибках предоставляют вам и вашим пользователям полезные данные(рис 11.11) Если типом выводимых данных является URL, то этот URL должен существовать на локальном сервере
Ошибки ASP можно передавать в журнал событий Windows, если указаны соответствующие параметры в окне Process Options Properties (Свойства обработки). Для настройки этих параметров откройте окно WWW Service Master Properties (Главные свойства службы WWW), щелкнув правой кнопкой мыши на сервере в Internet Services Manager (Диспетчер служб интернета). Откройте вкладку Home Directory (Домашний каталог), после чего нажмите на кнопку Configuration (Настройка). Откроется окно Application Configuration Properties (Настройка конфигурации приложения). Откройте вкладку Process Options (Обработки опций) (см. рис. 11.13).
(рис 11.13) Параметры конфигурации приложения устанавливаются на уровне веб-сайта и виртуального каталога, а опции обработки – только на главном уровнеОтметьте опцию Write Unsuccessful Client Requests To
Опция Enable Debug Exception Catching (Включить перехват исключений при отладке) отмечается только при отладке, так как она фиксирует любые сообщения об ошибках, поступающие от компонента. Так как отладка должна осуществляться только на сервере разработки, убедитесь, что данная опция отключена.
Иван, молодой разработчик, работающий над новым сайтом электронной коммерции, создает сценарии ASP для подключения веб-сайта к базе данных Microsoft SQL Server, содержащей информацию о клиентах, т.е. их имена, адреса, заказы и т.д. В понедельник утром Иван заявляет, что немедленно увольняется из компании и начинает новую карьеру. Время, отведенное на разработку сайта, неумолимо истекает, поэтому необходимо привлечь на место Ивана другого сотрудника. Вас устраивало качество выполнения Иваном своей работы, однако нужно удостовериться в том, что ее можно использовать.
Первым делом запретите Ивану доступ к файлам ASP и всей сети организации. Проинформируйте сетевого администратора о том, что учетная запись Windows, принадлежащая Ивану, должна быть удалена. Это запретит бывшему сотруднику доступ к сети. В дополнение к этому все члены команды разработки должны сменить свои пароли при следующем входе в систему. Это мера предосторожности необходима на тот случай, если Иван знает пароли других разработчиков компании.
Так как Иван имел доступ к базе данных SQL Server, он знает имя пользователя и пароль доступа, используемый страницами ASP для открытия соединения. У него могла быть и своя собственная учетная запись SQL Server с повышенными привилегиями, позволявшими ему проводить работу по разработке. Проинформируйте администратора базы данных о том, что учетная запись Ивана в базе данных должна быть удалена, а также об изменении пароля, используемого страницами ASP. Кроме этого, необходимо сменить остальные системные пароли, которые мог знать Иван.
Следующая задача состоит в том, чтобы провести обзор всей выполненной Иваном работы. Несмотря на то, что написанный им код хорошо закомментирован, нужно просмотреть каждую строку и выяснить следующее.
После того как код Ивана пройдет эту проверку, протестируйте его на сервере разработки для выявления синтаксических или семантических ошибок. Проверка должна включать в себя передачу данных сценариям (не только корректных значений, но и величин, превышающих максимально допустимые значения или соответствующих граничным условиям). Например, проверьте, каким образом осуществляется поддержка заказа на сумму, равную точно $500, если максимально разрешенной суммой покупки является $500.
Хотя Иван мог и вовсе не включать в код ненужные или вредоносные фрагменты, процедура проверки необходима, так как Иван осуществлял активный доступ к вашей сети и ее ресурсам.
Java-апплеты или элементы ActiveX повышают уровень функциональности сайта, реализовывая ниспадающие меню или бегущую строку. Так как пользователям интернета известны уязвимые места таких апплетов, то после их разработки и тестирования нужно убедить посетителей в том, что содержимому сайта можно доверять, и что он безопасен. Многие сетевые экраны настроены на блокирование апплетов без доверия, а политики безопасности предусматривают запрет установки и выполнения сторонних апплетов на компьютерах сети. Самым простым способом убедиться в безопасности апплета или макроса является подпись объекта при помощи цифрового сертификата подписи кода.
Сертификат идентифицирует организацию и выпускается бюро сертификатов только после того, как оно подтвердит наличие организации и ее сферу деятельности. Примером бюро сертификатов является компания VeriSign. Сертификаты для подписывания кода (в VeriSign они называются цифровыми идентификаторами) позволят разработчикам ставить цифровую подпись на программное обеспечение и макросы для обеспечения безопасности их доставки через интернет. Любой пользователь, загрузивший подписанный цифровым сертификатом элемент ActiveX, Java-апплет, динамически подсоединяемую библиотеку, файлы .cab или .jar, может быть уверен в том, что загружаемый код действительно поступает от вас, а также в том, что он не был изменен или поврежден с момента создания и подписи. Подписывание программ выступает в роли упаковки, в которую "заворачивается" программное обеспечение, так как в случае изменения программы цифровая подпись станет недействительной аналогично тому, как поврежденная пленка на запакованных продуктах предупреждает потребителя о том, что с товаром что-то произошло.
К сожалению, необходимо использовать различные сертификаты для подписи кода от двух основных поставщиков
Многоцелевые сертификаты для подписывания программ можно получить, например, от бюро сертификатов Thawte по адресу http://www.thawte.com. Эти сертификаты используются несколькими приложениями, поэтому не нужно приобретать отдельный сертификат для каждого подписываемого приложения.
Серверные расширения Microsoft FrontPage (FPSE) представляют собой набор программ, которые устанавливаются на сервере IIS для разработки и администрирования расширенных с помощью FrontPage сайтов, позволяя удаленным пользователям выполнять определенные задачи непосредственно на сервере. Фраза "непосредственно на сервере" является причиной того, что в лекции 3 не рекомендовалось устанавливать FPSE на защищаемом сервере, и этот совет по-прежнему остается в силе, так как компонент FPSE уже был предметом атак хакеров. Тем не менее, вам потребуется администрирование и разработка, обеспечиваемая FPSE при предоставлении услуг по веб-хостингу. Информация по установке FPSE находится в следующих разделах, ознакомьтесь с ней, чтобы разобраться в аспектах безопасности этого компонента и повысить его уровень защищенности.
Всегда используйте последнюю версию FPSE (это версия 2002), показанную на рис. 11.14 в окне Properties (Свойства) сервера. Расширения можно загрузить из раздела FrontPage сайта MSDN по адресу http://msdn.microsoft.com/library/default.asp?url/library/en-us/dnservext/html/fpse02win.asp. Пакет FrontPage Server Extensions Resource Kit доступен по адресу http://office.microsoft.com/Assistance/2000/FPserk.aspx; в нем имеются полезные сведения по использованию FPSE.
После установки FPSE 2002 можно использовать страницы HTML Administration или командую строку для администрирования веб-сайтов и сервера. Администрирование расширений FrontPage 2000 Server Extensions раньше осуществлялось при помощи Microsoft Management Console (MMC), а теперь эта возможность недоступна. Так как формы HTML позволяют осуществлять удаленное администрирование, они должны быть удалены. По умолчанию эти формы устанавливаются в каталог C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\50\admisapi\1033 наряду с другими
(рис 11.14) Компонент FrontPage 2002 Server Extensions добавляет собственную вкладку в окна главных свойств, свойств сайта и свойств виртуального каталогаДля
С этим программным пакетом устанавливаются две
Вам пригодятся также две полезные команды Disable и DatabaseConnection. Команда Disable предназначена для отключения разработки и администрирования из клиента FrontPage после внесения каких-либо изменений, а также для их повторного включения при внесении изменений в содержимое. Команда DatabaseConnection предназначена для проверки информации о подключении к базе данных, для шифрования имени и пароля учетной записи перед их сохранением. Более подробная информация об администрировании из командной строки доступна в руководстве администратора по адресу http://www.microsoft.com/technet/treeview/default.asp?url=/technet/prodtechno/sharepnt/proddocs/admindoc/ows000.asp.
Расширенный при помощи FrontPage Extensions сайт содержит веб-страницы, рисунки и другие файлы и документы. Пользователям могут быть присвоены роли для управления или обновления расширенного веб-сайта. Ранее управление ролями пользователей для FPSE осуществлялось из клиента FrontPage с помощью команды Security (Безопасность) в меню Tools (Сервис). При помощи расширений 2002 Extensions осуществляется управление ролями с использованием средства администрирования командной строки или с помощью страниц администрирования HTML. По умолчанию устанавливаются следующие роли.
По умолчанию устанавливаются следующие роли.
FrontPage использует все возможности FPSE. Когда автор или администратор выполняет операцию при помощи FrontPage, он подключается к серверным расширениям, используя протокол удаленного вызова процедур RPC, лежащего в основе HTTP и HTML. Запрос POST отправляется из клиента FrontPage одной из трех библиотек DLL FPSE.
Когда веб-браузер или FrontPage-расширенный веб-сайт запрашивает страницу, требующую FPSE, например, форму отправки данных поиска, он отправляет запрос POST программе просмотра Shtml.dll. После получения службой IIS запроса для FPSE она осуществляет вход в систему и имитирует пользователя, после чего запрос передается напрямую библиотеке Admin.dll, Author.dll или Shtml.dll. Далее библиотека DLL FPSE сверяет разрешения имитируемого администратора, автора или посетителя со списком ACL в корневой папке веб-сайта или страницы. При положительном результате проверки запрос обрабатывается; в противном случае клиенту FrontPage или браузеру передается сообщение "Доступ запрещен".
Разрешения на содержимое FrontPage-расширенного веб-сайта применяются ко всему веб-сайту, поэтому веб-разработчики имеют доступ ко всем страницам, а посетители могут их все просматривать. Разделите содержимое на сервере таким образом, чтобы различные группы пользователей имели разрешения на администрирование, разработку или просмотр различных областей содержимого посредством деления его на разделы.
Важно. Не включайте блокировку учетной записи в гостевой учетной записи интернета, так как это может привести к успешному выполнению атаки на отказ в обслуживании (DoS). Вместо этого обеспечьте устойчивый пароль учетной записи в целях предотвращения его взлома.
FrontPage обеспечивает полный доступ ко всем файлам для членов группы Administrators (Администраторы) и учетной записи SYSTEM. Разрешения на выполнение посетителями сайта, разработчиками и администраторами присваиваются всем папкам, помеченным исполняемым виртуальным корневым каталогом. Разрешение на выполнение устанавливается только в том случае, если в окне Properties (Свойства) расширенного с помощью FrontPage веб-сайта отмечена опция Allow Authors To
Списки ACL для FrontPage-расширенного веб-сайта приведены в таблице 11.1.
| Веб-папка или содержимое | Параметр ACL для папок или содержимого | Параметр для нового содержимого, создаваемого внутри папки |
|---|---|---|
| Папка верхнего уровня корневого каталога веб-сайта или страницы | Посетители: чтение, выполнение Авторы: чтение, выполнение, запись и удаление Администраторы: чтение, выполнение, запись, удаление и изменение разрешений | Посетители сайта: чтение Авторы: чтение, запись и удаление Администраторы: чтение, запись, удаление и изменение разрешений. |
| Папка веб-сайта в каталоге высшего уровня | Посетители сайта: чтение Авторы: чтение, выполнение, запись и удаление Администраторы: чтение, выполнение, запись, удаление и изменение разрешений | Посетители сайта: чтение Авторы: чтение, запись и удаление Администраторы: чтение, запись, удаление и изменение разрешений. |
| Исполняемая папка | Присвоение папке статуса исполняемой не влияет на текущий список ACL. | Присвоение папке статуса исполняемой предоставляет разрешения на выполнение посетителям сайта, авторам и администраторам в текущем списке ACL. |
| Папка, содержащая результаты форм | Если папка содержит группу обсуждения или результаты обработки информации базы данных, FrontPage присваивает разрешения на запись для посетителей сайта в текущем списке ACL. | Если папка содержит группу обсуждения или результаты обработки информации базы данных, FrontPage присваивает разрешения на запись для посетителей сайта в текущем списке ACL. |
| Папка FrontPage_vti_pvt | Посетители сайта: чтение, выполнение, запись, удаление Авторы: чтение, выполнение, запись, удаление Администраторы: чтение, выполнение, запись, удаление, изменение разрешений | Посетители сайта: чтение, запись, удаление. Авторы: чтение, запись, удаление. Администраторы: чтение, запись, удаление, изменение разрешений. |
| Папка FrontPage_vti_log | Посетители сайта: чтение, выполнение, запись, удаление Авторы: чтение, выполнение, запись, удаление Администраторы: чтение, выполнение, запись, удаление, изменение разрешений | Посетители сайта: чтение, запись, удаление. Авторы: чтение, запись, удаление. Администраторы: чтение, запись, удаление, изменение разрешений. |
| Папка FrontPage_vti_txt | Посетители сайта: чтение, выполнение, запись, удаление Авторы: чтение, выполнение, запись, удаление Администраторы: чтение, выполнение, запись, удаление, изменение разрешений | Посетители сайта: чтение, запись, удаление. Авторы: чтение, запись, удаление. Администраторы: чтение, запись, удаление, изменение разрешений. |
| Файлы содержимого | Посетители сайта: чтение Авторы: чтение, запись, удаление Администраторы: чтение, запись, удаление, изменение разрешений | |
| Файлы в папке, содержащей результаты форм | Добавляет разрешения на запись для посетителей сайта в текущий список ACL |
Совет. Если вы создаете базу данных (например, Microsoft Access) и связываете ее с FrontPage-расширенным веб-сайтом, сохраняйте ее в папке, созданной FrontPage, – _fpdb. FrontPage автоматически пометит эту папку как непросматриваемую, доступную для сценариев или исполняемую. Удостоверьтесь и в том, что применены механизмы безопасности, встроенные в базу данных или сервер базы данных, для ограничения пользователей, имеющих право обновлять содержимое базы данных. Как правило, учетные записи веб-авторов не требуют привилегий выше, чем запрос SELECT. Веб-авторам не следует разрешать обновление, вставку или удаление записей из базы данных. Эти задачи выполняются через внешний интерфейс базы данных.
FPSE позволяет создавать отдельные подсайты. Подсайт представляет собой законченный FrontPage-расширенный веб-сайт, который можно создать на любом уровне структуры содержимого, включая уровень, находящийся под другим подсайтом. Несмотря на то, что данные объекты при доступе через веб-веб-браузер выглядят как обычные подпапки, их можно полностью отделить от родительского веб-сайта. Если сайт содержит раздельные области содержимого, управление которыми осуществляется различными людьми, и нужно запретить авторам доступ ко всему содержимому сайта, используйте раздельные подсайты для сегрегации данных. Это позволит структуре содержимого веб-сайта соответствовать структуре предприятия; например, реализовывать для различных отделов управление только собственными областями данных на сайте. Так как каждый подсайт имеет свои настройки безопасности, безопасность может быть настроена на достаточно высоком уровне детализации параметров защиты. Например, автору FrontPage-расширенного веб-сайта не должно автоматически присваиваться разрешение на редактирование любых подсайтов.
Так как виртуальный сервер имеет свои собственные параметры безопасности и свой собственный список пользователей, создание виртуального сервера является способом ограничения доступа к веб-содержимому. Дополнительным преимуществом виртуальных серверов и подсайтов является потенциально более высокая производительность, так как время, необходимое для пересчета гиперссылок, прямо пропорционально числу и размеру документов, хранимых на одном веб-сервере.
Совет. Когда администратор устанавливает списки ACL для FrontPage-расширенного веб-сайта с помощью команды Permissions клиента, FrontPage выводит список учетных записей сервера по умолчанию. Можно создать ограниченный список пользователей и групп для каждого веб-сайта, расширенного при помощи FrontPage. Это предотвратит отображение полного списка учетных записей Windows. Обратитесь к документации FPSE и выясните, как это сделать.
Можно временно или постоянно удалить FrontPage 2002 Server Extensions с сервера IIS. Для временного удаления расширения используйте команду
Owsadm.exe –o fulluninstall –p <port>
Для временной деинсталляции FrontPage 2002 Server Extensions введите следующую команду в командной строке, заменив <port> номером порта указанного виртуального сервера:
Owsadm.exe –o uninstall –p <port>
Иногда информация, предоставляемая средствами командной строки, является очень скудной. Для проверки или настройки переменных конфигурации расширения сервера найдите их в реестре или в файле Service.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ Shared Tools\Web server Extensions\All Ports.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\ Web server Extensions\Ports\<Номер порта>.Если переменная никогда не устанавливалась, она может не иметь записи в реестре. Конфликты настроек разрешаются в следующем порядке: переменные конфигурации подсайтов имеют высший приоритет, переменные конфигурации виртуальных серверов – средний приоритет, а переменные глобальной конфигурации – низший. Наиболее важные переменные описываются в последующих разделах.
При использовании FPSE не требуется доступ с открытием файлов для общего пользования на компьютере веб-сервера, а пользователям не нужен ни FTP, ни Telnet для управления своими веб-страницами, так как управление осуществляется через HTTP. Тем не менее, внимательно отслеживайте все уведомления безопасности Microsoft, чтобы быть в курсе появления новых уязвимых мест. Программа FrontPage 2002 Server Extensions улучшена по сравнению с предыдущими версиями, но вам следует ознакомиться с онлайновой справкой и разобраться в том, как управлять этими расширениями.
Установите значение AccessControl, равное 1; в противном случае каждый раз при создании подсайта любой пользователь получит права автора по отношению к этому подсайту, пока параметры доступа не будут настроены вручную.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 1 | Да | Да | Нет |
Установите значение AllowExecutableScripts на нуль, если не нужно помечать отдельные файлы как исполняемые.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 0 | Да | Да | Нет |
Если переменная NoExecutableCgiUpload установлена на ненулевое значение, FPSE не будет устанавливать бит исполняемого файла на сценарии CGI, отгружаемые автором на веб-сайт с помощью FrontPage. Это позволит веб-мастеру устанавливать разрешение Execute (Выполнение) вручную после проверки сценария. Если переменные NoExecutableCgiUpload и AllowExecutableScripts установлены на нуль, можно отгружать и выполнять файлы ASP и
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 1 | Да | Да | Нет |
Устанавливает самую раннюю версию клиента FrontPage, подключаемую к серверу.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| Любая версия | Нет | Нет | Да |
Если переменная NoMarkScriptable установлена на ненулевое значение, пользователи FrontPage не смогут изменять бит обработки сценариями на любых папках веб-сайта; это сможет делать только веб-мастер.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 0 | Да | Да | Да |
Ранние версии FrontPage позволяют обработчику форм по умолчанию (Save Results) передавать результаты формы по каналу любой случайно выбранной программе. Для обратной совместимости NoSaveResultsPipeTo отключает данную возможность при установке на ненулевое значение.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 1 | Да | Да | Нет |
Если значение переменной NoSaveResultsToAbsoluteFile установлено на 1, обработчик форм по умолчанию (Save Results), обработчик Registration (Регистрация) и Discussion (Обсуждение) не cмогут осуществлять запись в файл с абсолютным путем, даже если текущая учетная запись имеет права NTFS на запись данных по этому пути; обработчики форм смогут записывать только в файл, находящийся внутри области веб-содержимого.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 1 | Да | Да | Нет |
Чтобы запретить посетителям сайта просматривать каталог _private, установите переменную PrivateBrowsable на нуль. После установки этот параметр будет применяться ко всем создаваемым веб-страницам. Он не оказывает влияния на веб-страницы, созданные перед установкой данного параметра.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 0 | Да | Да | Нет |
Если значение параметра RequireSSL установлено на 1, серверные расширения потребуют соединение между клиентом FrontPage и сервером через протокол защищенных сокетов SSL.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 0 | Да | Да | Нет |
Если данный параметр установлен на ненулевое значение, то серверные расширения будут осуществлять поиск предопределенной группы Windows. Переменная RestrictIISUsersAndGroups не может быть установлена на уровне подсайта.
| Значение | Глобально | Для виртуального сервера | Для подсайта |
|---|---|---|---|
| 0 | Да | Да | Нет |
Веб-роботы, также называемые "пауками" или веб-странниками, – это программы, автоматически исследующие всемирную сеть через рекурсивное получение страниц по гиперссылкам. Робот посещает сайты посредством запросов документов с этих сайтов и создает базу данных, которая используется поисковой машиной для нахождения документов, соответствующих строке поиска. Если сайт открыт для общего доступа, пользователи должны иметь возможность поиска сайта с помощью поисковой системы. Тем не менее, следует запретить роботам доступ к страницам сайта, особенно к тем, которые содержат важную информацию, так как это может привлечь внимание хакеров. Большая часть веб-роботов содержит два механизма ограничения областей сайтов, которые они будут посещать: протокол исключений роботов
Для указания разделов сайта, которые не должны посещаться роботом, создайте специально отформатированный файл с именем
Содержимое файла
User-agent: * Disallow: /scripts/ Disallow: /includes/ Disallow: /mike/
В этом примере роботы могут посещать все части сайта, кроме трех вложенных папок: scripts, includes и mike. Регулярные выражения не поддерживаются в строках User-agent или , однако звездочка ("*") в поле User-agent имеет специальное значение – "любой робот". Следовательно, нельзя вводить в файл такие строки: или . Укажите отдельную строку для каждой папки, которую нужно исключить из списка посещаемых роботом объектов. Нельзя включать в запись и пустые строки, так как они используются для разделения нескольких записей.
Ниже приведено несколько примеров того, как запретить роботам посещение всего сайта целиком или его отдельных частей.
Чтобы исключить всех роботов для всего сайта:
User-agent: * Disallow: /
Чтобы исключить всех роботов для отдельных папок на сайте:
User-agent: * Disallow: /scripts/ Disallow: /includes/ Disallow: /private/
Чтобы исключить одного робота:
User-agent: BadBot Disallow: /
Чтобы разрешить определенного робота:
User-agent: WebCrawler Disallow:
Так как в этом случае не может существовать поле "Allow" (Разрешить), то для исключения всех файлов, кроме одного, поместите эти файлы в отдельную подпапку (например, private), и перенесите один файл на уровень выше, чем данная папка, например:
User-agent: * Disallow: /corporate/private/
В качестве альтернативы можно явным образом запретить доступ робота к каждой странице:
User-agent: * Disallow: /corporate/private.html Disallow: /corporate/sensitive.html Disallow: /corporate/hr.html
Файл
Если несколько веб-разработчиков или подразделений одновременно управляют различными разделами сайта, то обновление файла
<HTML> <HEAD> <META NAME="robots" CONTENT="noindex,nofollow"> <META NAME="description" CONTENT="Данный документ рассказывает о …."> <TITLE>Внутренняя безопасность</TITLE> </HEAD> <BODY>
В содержимом META-тега роботов присутствуют директивы, разделяемые запятыми. В настоящий момент определены директивы INDEX, NOINDEX, FOLLOW и NOFOLLOW. Директива INDEX указывает, должен ли робот индексировать страницу. Директива FOLLOW указывает, должен ли робот переходить по ссылкам на странице для поиска других страниц. Директивами по умолчанию являются INDEX и FOLLOW. Значения ALL и NONE включают и выключают директивы: ALL=INDEX,FOLLOW и NONE=NOINDEX,NOFOLLOW.
Чтобы разрешить роботу индексирование и анализ страницы на предмет ссылок, добавьте следующий META-тег:
<META NAME="robots" CONTENT="index,follow">
или
<META NAME="robots" CONTENT="all=index.follow">
Остальные комбинации приведены ниже:
<META NAME="robots" CONTENT="noindex,follow"> <META NAME="robots" CONTENT="index,nofollow"> <META NAME="robots" CONTENT="noindex,nofollow">
Очевидно, что не следует указывать конфликтующие или повторяющиеся директивы, например:
<META NAME="robots" CONTENT="index,noindex,nofollow,follow">
.
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.