Мы используем spring ws в качестве фильтра для выполнения WS-Security на основе токена, отметки времени и подписи на входящем запросе мыла.
Мы хотим предотвратить атаку XXE, используя тот же фильтр и задаваясь вопросом,возможно.
Мы используем 'org.springframework.ws.soap.axiom.AxiomSoapMessageFactory' в качестве messageFactory, и у него есть два сеттера setSupportingExternalEntities и setReplacingEntityReferences, которые по умолчанию имеют значение false.
]>
Теперь, если сущность удалена с помощью doctype в запросе мыла, и она указана с помощью & xxe;тогда Spring Framework возвращает ошибку
org.apache.axiom.soap.SOAPProcessingException: A SOAP message cannot contain entity references because it must not have a DTD
2018-05-18T13:14:33,272 DEBUG [org.springframework.ws.soap.server.SoapMessageDispatcher] Endpoint invocation resulted in exception - responding with Fault
org.apache.axiom.soap.SOAPProcessingException: A SOAP message cannot contain entity references because it must not have a DTD
at org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder.createEntityReference(StAXSOAPModelBuilder.java:359) ~[axiom-api-1.2.15.jar:1.2.15]
at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:279) ~[axiom-api-1.2.15.jar:1.2.15]
Но тогда эта ошибка не приходит, если мы заменим & name;с &; xxe;или & xxe;Spring ws Framework позволил этому пройти.
Я не хочу, чтобы он проходил какую-либо дальнейшую обработку, поэтому, если возможно, мы можем как-то не допустить само объявление doctype в запросе мыла.
спасибо за любую помощь и указатели для решения этой проблемы