2013-07-26 4 views
-2

У меня есть веб-приложение (JSP), и мне нужно ограничить доступ, поэтому только зарегистрированные пользователи видят приложение. Я посмотрел его, и я нашел много разных подходов. Некоторые говорят, что использовать куки, сеансы или фреймворки, такие как Spring Security.
Что я должен использовать? Пока у меня есть средний опыт программирования java и jsp, так что вы мне порекомендовали?
большое спасибо!Как я могу защитить веб-приложение?

ответ

1

Вместо того, чтобы готовить домашнюю версию Spring Security, я предлагаю использовать ее напрямую. Рассмотрим следующие преимущества:

  • В будущем, если вам нужны новые функции безопасности, то вы можете просто включить их вместо того, чтобы развивать их от нуля (для аутентификации LDAP пример, SSO, ...)
  • Есть что новый разработчик уже знаком с вашей инфраструктурой безопасности (с другой стороны, он уверен, что он не будет знаком с вашим домашним предприятием)
  • Большинство из них имеют хорошую документацию, поэтому изучение кубы мало, когда мы говорим об основных Авторизация URL (у вас есть достаточно времени для подготовки того же уровня документации для вашей домашней библиотеки?).
  • У них есть встроенная поддержка против таких атак, как фиксация сеанса и т. Д.
  • У них есть несколько точек расширения, поэтому вы не будете ограничены фреймворком (вы сможете добавлять/изменять необходимые функции).
  • Они имеют модульную структуру, вам не нужно загружать все модули/знать о них. Используйте только то, что вам нужно.

Возможно, вам будет полезно ознакомиться с Apache Shiro и Spring Security.

В случае весенней безопасности, если вы начинаете читать официальную документацию от here, вы можете подготовить все conf для основной авторизации URL (с жестко закодированными пользователями в conf) менее чем за 30 минут.Затем вам нужно включить соответствующие банки в свой путь к классам (для Spring и Spring Security), и все. Включите ведение журнала отладки для org.springframework.security, чтобы узнать, что происходит.

1

Рассмотрите использование сервлет-фильтра. Храните зарегистрированного пользователя в сеансе и настройте фильтр, чтобы проверить, что пользователь регистрируется, когда он пытается получить доступ к защищенным каталогам вашего сайта (через url-шаблон).

Основная информация здесь http://www.tutorialspoint.com/jsp/jsp_writing_filters.htm.

Но вот что-то более конкретное, чтобы вы начали.

Создайте класс, реализующий javax.servlet.Filter, переопределите метод doFilter и убедитесь, что пользователь вошел в систему и настроил urlPatterns с помощью аннотаций.

аннотации на фильтре будет что-то вроде этого:

@WebFilter(filterName="LoggingFilter", urlPatterns={"/secured/*"}) 

каталога, который вы хотите защитить называются «обеспеченный».

В классе переопределить метод doFilter() и проверить, что пользователь вошел в систему:

User user = session.getAttribute("user"); 
if (user != null) { 
    chain.doFilter(request, response); // User is logged in so forward response. 
} else { 
    response.sendRedirect("login"); // User not logged in so redirect to login page. 
} 

Это эффективный способ ограничить вошедшего в систему пользователя к определенным частям сайта. Этот простой пример может быть расширен для ограничения доступа к различным частям сайта в зависимости от типа пользователя или некоторых других критериев.

+0

Спасибо, очень полезная информация. Итак, вы предлагаете не использовать фреймворк, например Spring Security, чтобы сделать это @Alex Theedom – yaylitzis

+0

Spring Security - это то же самое, что и у bonnett. Он перехватывает HTTP-запросы через фильтр сервлета. То же, что и выше, но Spring Security имеет гораздо большую конфигурацию и, следовательно, больше осложнений. Выбор, который вы делаете, зависит от целого ряда взаимосвязанных факторов. Опция выше проста и проста в реализации whie Spring Security сложнее и, возможно, больше, чем вам нужно для вашего проекта. Хотя, если вы уже используете Spring, имеет смысл использовать Spring Security. – Alex

Смежные вопросы