Как ограничить расширение сущности xml на сервере weblogic для SOAP-запроса - PullRequest
0 голосов
/ 26 января 2019

Я звоню в службу прокси (SOAP), созданную с использованием OSB 11.x и развернутую в Weblogic 10.x. Я должен ограничить расширение сущности xml, но это не работа.

Когда мы нажимаем на запрос, используя SOAP UI, тогда & xxe; получить фактическое значение, т.е. «NewName», когда запрос достигает уровня прокси OSB.

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

Как мы можем ограничить это до получения прокси-сервиса. Мне нужно убедиться, что анализатор XML не должен обрабатывать тип запроса.

<!DOCTYPE foo [<!ENTITY xxe "NewName">]>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:man="http://nil.api.com/xsd/manageemployee_1">
   <soapenv:Header/>
   <soapenv:Body>
      <man:ManageEmployee_1Request>
         <man:employeeDeatil>
            <man:id>11</man:id>
            <man:firstName>&xxe;</man:firstName>
         </man:employeeDeatil>
      </man:ManageEmployee_1Request>
   </soapenv:Body>
</soapenv:Envelope>

Я настроил собственный анализатор, как показано ниже, и установил classpath в startWebLogic.cmd в OSB_Domain \ bin

set CLASSPATH =% CLASSPATH%;% DOMAIN_HOME% \ customXMLRegistry \ xercesImpl-2.6.2-jaxb-1.0.6.jar;% DOMAIN_HOME% \ customXMLRegistry \ CustomXMLParser-0.0.1-SNAPSHOT.jar

ПРИМЕЧАНИЕ. Даже создание реестра XML с пользовательским анализатором документов и SAX не сработало.

1) Конструктор пользовательских документов

import com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl; открытый класс CustomDocumentBuilderFactoryImpl extends DocumentBuilderFactoryImpl {

public ZaapCustomDocumentBuilderFactoryImpl() {
    super();
}

@Override
public DocumentBuilder newDocumentBuilder() throws ParserConfigurationException {
    System.out.println("=====================Start Parser=======");
    setFeature("http://apache.org/xml/features/nonvalidating/load-dtd-grammar", false);
    setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
    setXIncludeAware(false);
    setExpandEntityReferences(false);
    System.out.println("=====================End Parser=======");
    return super.newDocumentBuilder();        
}

} * * тысяча двадцать-один

2) Custom Sax Parser

import com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl; открытый класс CustomSaxParseFactoryImpl extends SAXParserFactoryImpl {

public ZaapCustomSaxParseFactoryImpl() {
    super();
}

@Override
public SAXParser newSAXParser() throws ParserConfigurationException {
    System.out.println("------------------------- NNN: SAXParser-----");
    try {

        System.out.println("----SAXParser-----");
        setFeature("http://xml.org/sax/features/external-general-entities",false);
        setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false);
        return super.newSAXParser();
    } catch (SAXNotRecognizedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (SAXNotSupportedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return null;

    // return super.newSAXParser();
}

}

...