- •Тема 1. Разработка простейших веб-приложений
- •Тема 2. Взаимодействие с сервлетом
- •Тема 3. Контекст сервлета
- •Тема 4. Веб-сессия
- •Тема 5. Фильтры и взаимодействие сервлетов
- •Тема 6. Безопасность веб-приложений
- •Тема 7. Введение в JSP
- •Тема 8. Встроенные объекты JSP
- •Тема 9. Стандартные действия и JavaBeans
- •Тема 10. Выражения JSP Expression Language
- •Тема 11. JSP Standard Tag Library
- •Тема 12. Локализация веб-приложений
- •Тема 13. Настраиваемые теги JSP
- •Тема 14. Взаимодействие с БД в веб-приложениях
- •Тема 15. Запросы к БД
Учебное пособие по 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-