Verhindern Sie XXE-Angriffe mit JAXB

Vor kurzem hatten wir eine Sicherheitsüberprüfung für unseren Code, und eines der Probleme ist, dass unsere Anwendung der Richtlinie unterliegtXML eXternal Entity (XXE) Angriff.

Grundsätzlich ist die Anwendung ein Taschenrechner, der Eingaben als XML über einen Web-Service empfängt.

Hier ist ein Beispiel für einen solchen XXE-Angriff auf unsere Anwendung:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header/>
   <soapenv:Body>
      <foo:calculateStuff>
         <!--Optional:-->
         <xmlInput><![CDATA[<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE currency [  
   <!ENTITY include SYSTEM "file:///d:/" >]>
<calcinput>...</calcinput>
]]></xmlInput>
      </foo:calculateStuff>
   </soapenv:Body>
</soapenv:Envelope>

Wie Sie sehen, können wir auf eine Entität verweisen, die auf eine externe Datei verweist ("file:///d:/").

In Bezug auf die XML - Eingabe selbst (die<calcinput>...</calcinput> Teil) ist nicht mit JAXB (v2.1) gemarshallt. Der Webservice-Teil basiert auf jaxws-rt (2.1).

Was muss ich tun, um meinen Webservice abzusichern?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage