Resolução Entidade WebLogic XML externo: Existe outra maneira além de usar o Registro XML?

StackOverflow https://stackoverflow.com/questions/1209743

Pergunta

Nós temos um aplicativo que usa SiteMesh, e quando WebLogic tenta analisar os arquivos TLD, vê a especificação DOCTYPE, contendo a referência ao TLD DTD, pelo " http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd ".

O servidor não pode iniciar conexões de saída para a Internet, e assim não pode recuperar o DTD, o que faz com que a implementação do aplicativo a falhar.

Eu entendo que este problema pode ser resolvido através da criação de um Registro XML no console WebLogic e especificando um arquivo local para retornar ao tentar resolver, por exemplo " http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd ".

Existe alguma outra maneira de impedir que o servidor vai para o 'net para resolver a referência de entidade externa? Empacotando o DTD com a aplicação e de alguma forma informar o servidor de olhar para esse DTD lá em vez de "lá fora"?

Foi útil?

Solução

pergunta

rápida que você está tentando fazer isso por razões de segurança? como para evitar qualquer tipo de ataque XXE?

Se assim você poderia implementar sua própria EntityResolver e alça como o analisador faz qualquer pesquisa local ou remoto.

Exemplos podem ser encontrados aqui https: //www.securecoding .cert.org / confluência / pages / viewpage.action? pageId = 61702260

caso contrário, você precisa definir as propriedades de configuração do XMLInputFactory para obter o comportamento desejado. particularmente javax.xml.stream.isSupportingExternalEntities e javax.xml.stream.isValidating só depende se você acha que precisa de validação.

http://docs.oracle.com/ javaee / 5 / api / javax / xml / stream / XMLInputFactory.html

Também olhar para o analisador Stax se faz sentido para o seu uso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top