Pergunta

Obrigado a todos com antecedência -

Como eu iria sobre como desabilitar o acesso através do browser por filetype?

Por exemplo, se eu quisesse desabilitar todo o acesso aos arquivos .xml como eu iria fazer isso?

Graças

Foi útil?

Solução

Tanto quanto eu sei que não há solução simples para isso. No fim deste post , é explicado como você pode usar JDBCRealm para criar um contexto de segurança em torno de alguns arquivos de sua eleição. Se um usuário tenta acessar um arquivo que corresponder ao seu padrão (no seu caso * .xml), eles seriam redirecionados para um início de sessão ou uma página de erro.

Outras dicas

Eu queria uma resposta para isso mesmo, e não ficou satisfeito com a resposta JDBCRealm.

As pastas padrão escondido "WEB-INF" e "META-INF" está codificado na lógica Resource estática, portanto, usando o mesmo mecanismo parece proibitivamente difícil. Você teria que substituir ou modificar alguma combinação de DefaultServlet , StandardContext , e StandardContextValve . É uma bagunça.

Mas há duas maneiras simples que eu tentei realizar a filtragem que você está depois.

Usando um Filtro

Você pode escrever um filtro de servlet genérico para retornar erros 404 para qualquer arquivo correspondente alguma lista. Você poderia configurar essa lista como Ambiente Entradas em context.xml, num href="http://java.sun.com/docs/books/tutorial/essential/environment/properties.html" rel="nofollow arquivo de propriedades em o classpath, armazenada em um banco de dados, ou qualquer que seja a sua preferência (mesmo como hard-coded Cordas, se você é algum tipo de masoquista).

Usando um Válvula (específico do Tomcat)

Tomcat Válvulas realizar praticamente a mesma coisa que Filtros, mas a um nível inferior. Eles não fazem parte do Servlet Spec , por isso a sua aplicação não vai ser portátil para outros recipientes Servlet. Além disso, em minhas experiências com este, o envio de 404 respostas não passar pelo mesmo canal que 404 respostas enviadas normalmente em sua aplicação (por exemplo, se você personalizado configuração 404 páginas ou manipuladores, eles não são usados ??quando um 404 retorno de uma válvula )

Não há maneira ainda mais simples. Você só redirecionar todas as solicitações com a extensão específica a algum servlet vazia.

Como esta:

<servlet-mapping>
   <servlet-name>Empty Servlet</servlet-name>
   <url-pattern>*.xml</url-pattern>
</servlet-mapping>

Esta não funciona com o Tomcat que não aceita um servlet-mapping sem uma declaração servlet correspondente. Eu recomendaria escrevendo um ErrorServlet simples que envia 404 sistematicamente tais como:

package com.yourpackage;

public class ErrorServlet extends HttpServlet{
  public ErrorServlet(){
  }
  public void service(HttpServletRequest request, HttpServletResponse response){
    response.sendError(HttpServletResponse.SC_NOT_FOUND);
  }
}

Em seguida, adicione a configuração correspondente no arquivo web.xml:

<servlet>
  <description>Servlet that displays a 404</description>
  <display-name>error</display-name>
  <servlet-class>com.yourpackage.ErrorServlet</servlet-class>
</servlet>
<servlet-mapping>
   <servlet-name>error</servlet-name>
   <url-pattern>*.xhmtl</url-pattern>
</servlet-mapping>
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top