Россия |
Безопасность активного содержимого
Дополнительные методы обеспечения безопасности веб-содержимого
Некоторые из динамических элементов веб-содержимого могут быть секретными или разрешенными для доступа только тем пользователям, которые зарегистрировались для использования предоставляемой услуги. Можно контролировать доступ к таким страницам посредством создания списков контроля доступа (ACL) и учетных записей Windows. Но такой подход не применишь на сайте, связанном с электронной коммерцией, так как у него будут тысячи пользователей. Посредством использования сценариев легко осуществляется контроль доступа к страницам без создания учетных записей пользователей Windows.
Обеспечение безопасности страниц при помощи ASP
Этот тип контроля доступа легко реализуется с использованием 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, который видит каждый пользователь.
Файловая система с шифрованием
Файловая система с шифрованием (EFS) обеспечивает внутреннее шифрование файлов, используемое файловой системой Windows 2000 и позволяющее шифровать файлы и папки в томах NTFS. EFS включается для документов в Windows 2000 посредством дополнительного файлового атрибута. Для шифрования содержимого папки перейдите к папке в Windows Explorer (Проводник Windows), щелкните правой кнопкой мыши на папке и выберите команду Properties (Свойства), чтобы открыть соответствующее окно (см. рис. 11.9).
Рис. 11.9. Обеспечьте шифрование содержимого папки, включив соответствующую опцию в окне Proрerties (Свойства)
Нажмите на кнопку Advanced (Дополнительно) и отметьте опцию Encrypt Contents To Secure Data (Шифровать содержимое для защиты данных) (см. рис. 11.10). Нажмите на OK, чтобы вернуться в Windows Explorer.
После обеспечения шифрования папки можно работать с ней и находящимися в ней файлами, как с любыми другими файлами и папками, поскольку процесс шифрования прозрачен для пользователя. Тем не менее, любой злоумышленник, который попытается открыть, скопировать, переместить или переименовать зашифрованные файлы, получит сообщение об отказе в доступе.
Рис. 11.10. Диалоговое окно Advanced Atributes (Дополнительные атрибуты) позволяет включить шифрование файла или папки
Предупреждение. EFS не сможет шифровать файлы с атрибутом System (Системный). Не пытайтесь преодолеть эту меру защиты для шифрования файлов в системной папке. Секретные ключи, необходимые для расшифровки, недоступны при загрузке системы, поэтому если системные файлы будут зашифрованы, система окажется в нерабочем состоянии.
Итак, каким же образом используется EFS для защиты секретного содержимого на веб-сайте? Наиболее часто EFS применяется в корпоративных сетях, в которых каждый пользователь имеет свою собственную веб-папку для публикации документов. Создав зашифрованную подпапку, каждый пользователь имеет доступ к частным документам через интрасеть, но остальным пользователям эти документы недоступны, даже если на сайте включена анонимная аутентификация. Причина в том, что шифруемые EFS файлы являются частными файлами, и к ним имеет доступ только пользователь, зашифровавший их. В качестве метода аутентификации используется встроенная аутентификация Windows или смешанная аутентификация в зависимости от настроек веб-сайта.
Важно. При использовании EFS следует шифровать папки, а не отдельные файлы, так как приложения создают временные файлы в тех же папках, где находятся исходные, особенно в процессе редактирования. При использовании шифрования на уровне папки временные файлы не будут сохраняться в виде открытого текста. По этой же причине следует применить шифрование к папке Temp, расположенной по адресу %SystemRoot%\TEMP.