Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
web-programmirovanie_uchebnoe_posobie.pdf
Скачиваний:
95
Добавлен:
09.02.2015
Размер:
4.9 Mб
Скачать

Учебное пособие по web-программированию (2013)

Веб-страница — сервлет

-основное взаимодействие, рассматриваемое на протяжении всего курса

Апплет — сервлет

-такое взаимодействие существует, но мы его не рассматриваем

Сервлет — сервлет

-мы рассматриваем только простейшие примеры данного взаимодействия. Напоминание: данный вид взаимодействия осуществляется с использованием javax.servlet.RequestDispatcher

получить доступ к сервлету

исполнить сервлет

передать информацию о состоянии (как передача переменных)

При создании фильтра средствами мастера NetBeans получается полноценный фильтр с необходимыми обёртками и обеспечивающий контроль интересующих сервлетов. Для просмотра работы фильтра по умолчанию в нём необходимо изменить значение параметра (в созданном по умолчанию классе) на «debug = true». Результат работы фильтра можно будет пронаблюдать в журнале (рисунок 5.5).

Рисунок 5.5.

Дополнительную информацию можно получить по адресу: http://www.tutorialspoint.com/servlets/servlets-writing-filters.htm

Тема 6. Безопасность веб-приложений

Механизмы обеспечения безопасности, HTTPS-аутентификация, элемент login в дескрипторе развёртывания, отличия декларативной и программной безопасности. Подход к обеспечению декларативной безопасности на примере сервера ApacheTomcat. Настройка HTTPS.

Механизмы обеспечения безопасности в Интернет и Интранет идентичны и в основном строятся на методах аутентификации. Существуют:

Базовый метод HTTP аутентификации

имя и пароль передаются в открытом виде

Цифровой метод HTTP аутентификации

с использованием хэш-функции

Аутентификация, основанная на экранной форме

-29-

Учебное пособие по web-программированию (2013)

HTTPS аутентификация клиента

строится с использованием SSL открытый и закрытый ключи

Для включения базового метода аутентификации в web.xml необходимо записать следующую конструкцию (рисунок 6.1):

<login-config> <auth-method>BASIC</auth-method>

</login-config> <security-constraint>

<auth-constraint> <role-name>tomcat</role-name>

</auth-constraint> </security-constraint>

Рисунок 6.1.

При этом роль «tomcat» должна быть записана в конфигурационном файле

Apache Tomcat («conf/tomcat-users.xml») в виде (рисунок 6.2)

<user username="myname" password="mypassword" roles="tomcat"/>

Важно! При изменении параметров сервера его необходимо перезапустить!

-30-

Учебное пособие по web-программированию (2013)

Рисунок 6.2.

При открытии приложения пользователю будет выдано стандартное приглашение браузера на ввод имени и пароля. В данном примере необходимо будет ввести имя «myname» и пароль «mypassword».

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

Преимущества декларативной аутентификации:

безопасность применяется автоматически — нет необходимости изменять сервлеты и JSP-страницы

обновление программ не требует обновления безопасности

простой механизм поддержки Недостатки:

доступ предоставляется или запрещается всем

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

все страницы имеют единый механизм аутентификации

Последовательность настройки декларативной безопасности:

1.Настройка пользователей, паролей и ролей

2.Настройка способа аутентификации в web.xml

3.Создание страницы ввода имени и пароля

4.Создание страницы ошибки

5.Настройка URL, которые должны защищаться

6.Настройка URL с доступом по HTTPS (при наличии поддержки сервером)

Возможно использование аутентификации с использованием web-формы. Для этого в web.xml необходимо записать:

<login-config> <auth-method>FORM</auth-method> <form-login-config>

<form-login-page>/login.html</form-login-page> <form-error-page>/error.html</form-error-page>

</form-login-config> </login-config>

Здесь login.html — форма логина, error.html — форма с сообщением об

-31-

Учебное пособие по web-программированию (2013)

ошибке. Естественно, вместо html страницы возможно использовать сервлеты или jsp-страницы.

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

аутентификация пользователя

проверка прав доступа Преимущества программной аутентификации:

гарантирует переносимость

различные стратегии по работе с паролями Недостатки:

тяжело программировать и поддерживать

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

Последовательность реализации программной безопасности:

1.Проверка заголовка безопасности

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

3.Проверка корректности имени и пароля

4.Если аутентификация не корректна, то отправка сообщения с ошибкой клиенту

Пример реализации базовой аутентификации для защиты сервлета:

Шаг 1. Создать пользователя и соответствующую роль в Apache Tomcat (рисунок 6.2)

Шаг 2. Описать в дескрипторе развёртывания web.xml базовую аутентификацию для выбранной роли (рисунок 6.1)

Шаг 3. Написать сервлет, защищённый на уровне декларативной безопасности (рисунок 6.3).

-32-

Учебное пособие по web-программированию (2013)

Рисунок 6.3.

Вприведённом примере пользователю отображается информация, введённая

ввиде имени пользователя с использованием метода request.getRemoteUser() (рисунок 6.4).

Рисунок 6.4.

Дополнительную информацию можно получить по адресу: http://www.tutorialspoint.com/jsp/jsp_security.htm

Для реализации доступа с использованием HTTPS необходимо в дескрипторе развёртывания web.xml в качестве транспорта указать CONFIDENTIAL, однако, этого недостаточно для работы с использованием HTTPS.

Для доступа по HTTPS необходима настройка SSL в сервере (Apache Tomcat):

закрытый ключ

открытый ключ

клиент

Всети существует большое количество описаний, позволяющих настроить

Apache Tomcat для работы в режиме HTTPS.

Например: http://habrahabr.ru/post/134453/

Шаг 1. Для начала создаётся хранилище (keystore) с ключом: Для этого в коммандной строке набирается следующий код:

>keytool -genkey -alias tomcat -keyalg RSA -keystore mystore -validity 999 -keysize

512

Здесь:

— tomcat — имя псевдонима

-33-

Учебное пособие по web-программированию (2013)

keyalg — алгоритм формирования ключа

keystore — имя хранилища

validity – Срок действия сертификата

keysize – Размер ключа

Шаг 2. Затем конфигурируется SSL-коннектор (фрагмент server.xml): Необходимо найти запись

<!-- Define a SSL HTTP/1.1 Connector on port 443

This connector uses the JSSE configuration, when using APR, the connector should be using the OpenSSL style configuration described in the APR documentation -->

после которой добавить (рисунок 6.5).

Рисунок 6.5.

Затем необходимо закомментировать в нём строки (второй строки может не быть в server.xml):

<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />

<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />

Шаг 3. Полученный файл mystore необходимо поместить в «корень» Apache Tomcat, если поместить не в корень то нужно изменить строку keystoreFile="mystore". Обратите внимание, что в keystorePass должен быть указан пароль, который был задан при генерации хранилища.

Шаг 4. Затем необходимо сгенерировать ключ клиента Необходимо набрать в консоли следующую команду :

> keytool -genkey -alias client -keyalg RSA -keystore myclientstore -storetype

-34-

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]