Javenue logo

Javenue

Программирование на Java

Информационные технологии

Ограничение доступа или защита jsp-страниц

[Статья была написана в 2006 году и устарела. В будущем статья будет переписана с учетом ServletFilters.]

В этой статье я приведу небольшой пример того, как защитить jsp-страницы вашего приложения от несанкционированного доступа.

Все, что вам нужно, - это создать небольшой Java-класс и наследовать jsp-страницы от него.

А вот и упрощенный пример такого класса (импорт пакетов опущен):

public abstract class SecureJSP extends HttpServlet 
        implements HttpJspPage {
    public void destroy() {
        jspDestroy();
    }

    public void init() throws ServletException {
        jspInit();
    }

    public void jspDestroy() { }

    public void jspInit() { }

    public void service(HttpServletRequest request, 
            HttpServletResponse response) throws IOException, ServletException {
        HttpSession session = request.getSession(false);
        boolean isPassed = false;

        if (session != null) {
            if (session.getAttribute(“authorized”) != null)
                isPassed = true;
        }

        if (!isPassed) {
            forward(getErrorPageName(), request, response);
            return;
        }
        _jspService(request, response);
    }

    private void forward(String page, HttpServletRequest request, 
            HttpServletResponse response) throws ServletException, IOException {
        RequestDispatcher dispatcher = request.getRequestDispatcher(page);
        dispatcher.forward(request, response);
    }

    protected String getErrorPageName() {
        return “/denied.jsp”;
    }
}

После прохождения авторизации, в текущую сессию кладется некоторый объект (в примере - authorized). При загрузке страницы проверяется наличие этого объекта в сессии. Если объект не был найден, пользователь перенаправляется на страницу с сообщением об отказе в доступе (denied.jsp).

После выхода пользователя из системы, объект обязательно нужно убрать из сессии.

Для указания того, что некоторая jsp расширяет Java-class, нужно в хедере страницы написать следующий код:

<%@ page extends=“SecureJSP”%>

Естественно класс SecureJSP можно значительно улучшить, но общее представление о защите веб-приложений, думаю, вы получили.



Комментариев: 0

  Выйти

  * для публикации комментариев нужно