TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #994 2.82K
🤔 Как можно предотвратить прямой доступ к JSP странице из браузера ?

Для предотвращения прямого доступа к JSP странице из браузера можно использовать несколько методов. Основная идея заключается в том, чтобы ограничить доступ к страницам, оставив доступ только через контроллеры, такие как сервлеты, или посредством определенных условий доступа.

🟠Размещение файлов внутри WEB-INF
Размещение файлов внутри папки WEB-INF предотвращает прямой доступ к ним из браузера. Любой файл в WEB-INF не может быть напрямую запрошен клиентом, но может быть доступен сервером, что позволяет контролировать доступ к через сервлеты.
/WEB-INF/
/jsp/
protectedPage.jsp
web.xml


Теперь доступ к protectedPage.jsp можно получить только через сервлет.
@WebServlet("/protectedPage")
public class ProtectedPageServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.getRequestDispatcher("/WEB-INF/jsp/protectedPage.jsp").forward(request, response);
}
}


🟠Использование фильтров (Servlet Filters)
Фильтры могут быть использованы для проверки доступа к JSP страницам и перенаправления запросов при необходимости. Фильтр можно настроить так, чтобы он проверял доступ только для авторизованных пользователей.
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.FilterServletRequest;
import javax.servlet.FilterServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebFilter("/jsp/*") // Применение фильтра ко всем запросам к JSP
public class AuthenticationFilter implements Filter {
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;

// Проверка сессии или авторизации
if (httpRequest.getSession().getAttribute("user") == null) {
httpResponse.sendRedirect(httpRequest.getContextPath() + "/login");
} else {
chain.doFilter(request, response);
}
}

public void init(FilterConfig fConfig) throws ServletException {
// Инициализация фильтра (если необходимо)
}

public void destroy() {
// Очистка ресурсов (если необходимо)
}
}


🟠Конфигурация в web.xml
Можно использовать декларативную конфигурацию в файле web.xml, чтобы ограничить доступ к JSP страницам.
<web-app ...>
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected JSP</web-resource-name>
<url-pattern>/protected/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>AUTHORIZED_USER</role-name>
</auth-constraint>
</security-constraint>

<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/login-error.jsp</form-error-page>
</form-login-config>
</login-config>

<security-role>
<role-name>AUTHORIZED_USER</role-name>
</security-role>
</web-app>


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 6
  • ❤ 1
More from @easy_java_ru
  1. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  2. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
  3. Oct 8, 2026Post #2955
  4. Oct 8, 2026🤔 Что такое поток "демон"? Демон-поток — это поток, который: - Работает на фоне (например…
  5. Oct 7, 2026🤔 Может ли Entity-класс быть абстрактным? Да, Entity может быть абстрактным, если он служ…
  6. Oct 7, 2026🤔 К какой категории сущности относится Primary Key? Primary Key (первичный ключ) в базах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →