KhanTengri
@KhanTengri

Как установить forbidden(HTTP 403 Error) страницу в Jetty?

Не хочу чтобы пользователи могли просматривать списки файлов в директориях css/* js/* img/* etc.


У меня уже есть пара идей на этот счет:

1. Элементарно положить в каждую из вышеперечисленных директорий index.jsp;

2. Назначить фильтр, который будет редиректить на 403.jsp при обращении к корням директорий(css/ js/ img/)


Но мне кажется, что это несколько неправильный подход, потому что кастомные страницы 404, 500 устанавливаются совершенно легко добавлением нескольких строк в web.xml:

<font color="black"><font color="#0000ff">&lt;</font><font color="#800000">error-page</font><font color="#0000ff">&gt;</font><br/>
  <font color="#0000ff">&lt;</font><font color="#800000">error-code</font><font color="#0000ff">&gt;</font>404<font color="#0000ff">&lt;/</font><font color="#800000">error-code</font><font color="#0000ff">&gt;</font><br/>
  <font color="#0000ff">&lt;</font><font color="#800000">location</font><font color="#0000ff">&gt;</font>/404.jsp<font color="#0000ff">&lt;/</font><font color="#800000">location</font><font color="#0000ff">&gt;</font><br/>
<font color="#0000ff">&lt;/</font><font color="#800000">error-page</font><font color="#0000ff">&gt;</font><br/>
<font color="#0000ff">&lt;</font><font color="#800000">error-page</font><font color="#0000ff">&gt;</font><br/>
  <font color="#0000ff">&lt;</font><font color="#800000">error-code</font><font color="#0000ff">&gt;</font>500<font color="#0000ff">&lt;/</font><font color="#800000">error-code</font><font color="#0000ff">&gt;</font><br/>
  <font color="#0000ff">&lt;</font><font color="#800000">location</font><font color="#0000ff">&gt;</font>/500.jsp<font color="#0000ff">&lt;/</font><font color="#800000">location</font><font color="#0000ff">&gt;</font><br/>
<font color="#0000ff">&lt;/</font><font color="#800000">error-page</font><font color="#0000ff">&gt;</font></font><br/>
<br/>
<font color="gray">* This source code was highlighted with <a href="http://virtser.net/blog/post/source-code-highlighter.aspx"><font color="gray">Source Code Highlighter</font></a>.</font>



… а вот 403 незнаю как и сделать.


ЗЫЖ Можно даже шире взять: как вообще установить 403-страницу в servlet-контейнерах? Я не думаю, что Tomcat, Jetty, etc. сильно в этом смысле отличаются…


UPD:


В общем в итоге я сделал так:

<font color="black"><br/>
<br/>
<font color="#0000ff">&lt;</font><font color="#800000">servlet</font><font color="#0000ff">&gt;</font><br/>
  <font color="#0000ff">&lt;</font><font color="#800000">servlet-name</font><font color="#0000ff">&gt;</font>forbidden<font color="#0000ff">&lt;/</font><font color="#800000">servlet-name</font><font color="#0000ff">&gt;</font><br/>
  <font color="#0000ff">&lt;</font><font color="#800000">jsp-file</font><font color="#0000ff">&gt;</font>/403.jsp<font color="#0000ff">&lt;/</font><font color="#800000">jsp-file</font><font color="#0000ff">&gt;</font><br/>
<font color="#0000ff">&lt;/</font><font color="#800000">servlet</font><font color="#0000ff">&gt;</font><br/>
<br/>
<font color="#0000ff">&lt;</font><font color="#800000">servlet-mapping</font><font color="#0000ff">&gt;</font><br/>
  <font color="#0000ff">&lt;</font><font color="#800000">servlet-name</font><font color="#0000ff">&gt;</font>forbidden<font color="#0000ff">&lt;/</font><font color="#800000">servlet-name</font><font color="#0000ff">&gt;</font><br/>
  <font color="#0000ff">&lt;</font><font color="#800000">url-pattern</font><font color="#0000ff">&gt;</font>/css/<font color="#0000ff">&lt;/</font><font color="#800000">url-pattern</font><font color="#0000ff">&gt;</font><br/>
  <font color="#0000ff">&lt;</font><font color="#800000">url-pattern</font><font color="#0000ff">&gt;</font>/img/<font color="#0000ff">&lt;/</font><font color="#800000">url-pattern</font><font color="#0000ff">&gt;</font><br/>
  <font color="#0000ff">&lt;</font><font color="#800000">url-pattern</font><font color="#0000ff">&gt;</font>/js/<font color="#0000ff">&lt;/</font><font color="#800000">url-pattern</font><font color="#0000ff">&gt;</font><br/>
<font color="#0000ff">&lt;/</font><font color="#800000">se</font><font color="#0000ff">&lt;</font><font color="#800000">rvlet-mapping</font><font color="#0000ff">&gt;</font></font><br/>
<br/>
<font color="gray">* This source code was highlighted with <a href="http://virtser.net/blog/post/source-code-highlighter.aspx"><font color="gray">Source Code Highlighter</font></a>.</font>


UPD2:


а потом переделал на нечто подобное:


<security-constraint>
<display-name>show forbidden message</display-name>
<web-resource-collection>
<web-resource-name>forbidden</web-resource-name>
<url-pattern>/css/</url-pattern>
</web-resource-collection>
<auth-constraint/>
</security-constraint>
  • Вопрос задан
  • 3318 просмотров
Пригласить эксперта
Ответы на вопрос 1
ertaquo
@ertaquo
В Tomcat это можно сделать добавлением новой секции в WEB-INF/web.xml (пример для /css/*):
<security-constraint>
  <web-resource-collection>
    <web-resource-name>HTTP-Protected-Resource-1</web-resource-name>
    <description>Description here</description>
    <url-pattern>/css/*</url-pattern>
    <http-method>GET</http-method>
    <http-method>POST</http-method>
  </web-resource-collection>
  <auth-constraint>
    <role-name>NOSOUPFORYOU</role-name>
  </auth-constraint>
</security-constraint>

<login-config>
  <auth-method>DEFAULT</auth-method>
  <realm-name>NOACCESSFORANYONE</realm-name>
</login-config>
<security-role>
  <role-name>NOSOUPFORYOU</role-name>
</security-role>


* This source code was highlighted with Source Code Highlighter.

Источник
Для Jetty тоже по идее должно подойти.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы