XMLThreatProtection-Richtlinie

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

Was

Beheben Sie XML-Sicherheitslücken und minimieren Sie Angriffe auf Ihre API. Mithilfe von konfigurierten Grenzwerten werden Angriffe über XML-Nutzlasten schnell erkannt. Mit den folgenden Ansätzen können Sie XML-Bedrohungen prüfen:

  • Nachrichten anhand eines XML-Schemas überprüfen (.xsd)
  • Den Nachrichteninhalt auf bestimmte Keywords oder Muster prüfen, die ausgeschlossen werden sollen
  • Fehlerhafte oder fehlgeformte Nachrichten vor dem Parsen analysieren

Elementverweis

Die Elementreferenz beschreibt die Elemente und Attribute der Richtlinie „XMLThreatProtection“.

<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1">
   <DisplayName>XML Threat Protection 1</DisplayName>
   <NameLimits>
      <Element>10</Element>
      <Attribute>10</Attribute>
      <NamespacePrefix>10</NamespacePrefix>
      <ProcessingInstructionTarget>10</ProcessingInstructionTarget>
   </NameLimits>
   <Source>request</Source>
   <StructureLimits>
      <NodeDepth>5</NodeDepth>
      <AttributeCountPerElement>2</AttributeCountPerElement>
      <NamespaceCountPerElement>3</NamespaceCountPerElement>
      <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
   </StructureLimits>
   <ValueLimits>
      <Text>15</Text>
      <Attribute>10</Attribute>
      <NamespaceURI>10</NamespaceURI>
      <Comment>10</Comment>
      <ProcessingInstructionData>10</ProcessingInstructionData>
   </ValueLimits> 
</XMLThreatProtection>

<XMLThreatProtection>-Attribute

<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1"> 

In der folgenden Tabelle werden Attribute beschrieben, die für alle übergeordneten Richtlinienelemente gelten:

Attribut Beschreibung Standard Präsenz
name

Der interne Name der Richtlinie. Der Wert des Attributs name kann Buchstaben, Ziffern, Leerzeichen, Bindestriche, Unterstriche und Punkte enthalten. Dieser Wert darf 255 Zeichen nicht überschreiten.

Optional können Sie das Element <DisplayName> verwenden, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.

Erforderlich
continueOnError

Legen Sie false fest, um einen Fehler zurückzugeben, wenn eine Richtlinie fehlschlägt. Dies ist für die meisten Richtlinien das erwartete Verhalten.

Legen Sie true fest, damit die Ablaufausführung auch nach dem Fehlschlagen einer Richtlinie fortgesetzt wird.

false Optional
enabled

Setzen Sie den Wert auf true, um die Richtlinie zu erzwingen.

Legen Sie false fest, um die Richtlinie zu deaktivieren. Die Richtlinie wird nicht erzwungen, selbst wenn sie mit einem Ablauf verknüpft ist.

true Optional
async

Dieses Attribut wurde verworfen.

false Veraltet

<DisplayName>-Element

Wird zusätzlich zum Attribut name verwendet, um die Richtlinie im Proxy-Editor der Verwaltungs-UI mit einem anderen Namen in einer natürlichen Sprache zu versehen.

<DisplayName>Policy Display Name</DisplayName>
Standardeinstellung

Wenn Sie dieses Element weglassen, wird der Wert des Namensattributs name der Richtlinie verwendet.

Präsenz Optional
Typ String

<NameLimits>-Element

Gibt Zeichenbeschränkungen an, die von der Richtlinie geprüft und erzwungen werden sollen.

<NameLimits>
   <Element>10</Element>
   <Attribute>10</Attribute>
   <NamespacePrefix>10</NamespacePrefix>
   <ProcessingInstructionTarget>10</ProcessingInstructionTarget>     
</NameLimits>
Standard:
Präsenz: Optional
Typ:

<NameLimits>/<Element>-Element

Gibt ein Limit für die maximal zulässige Zeichenanzahl in einem Elementnamen im XML-Dokument an.

Betrachten Sie beispielsweise das folgende XML:

<book category="WEB">
   <title>Learning XML</title>
   <author>Erik T. Ray</author>
   <year>2003</year>
</book>

Beim Analysieren der oben angegebenen XML-Datei überprüft der Elementwert <Element> im Richtlinien-Snippet unten die Elementnamen (book , title, author und year) dürfen nicht länger als 10 Zeichen sein.

<NameLimits>
   <Element>10</Element>
   <Attribute>10</Attribute>
   <NamespacePrefix>10</NamespacePrefix>
   <ProcessingInstructionTarget>10</ProcessingInstructionTarget>     
</NameLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ: Ganzzahl

<NameLimits>/<Attribute>-Element

Gibt eine Höchstzahl von Zeichen an, die in jedem Attributnamen im XML-Dokument zulässig sind.

Betrachten Sie beispielsweise das folgende XML:

<book category="WEB">
   <title>Learning XML</title>
   <author>Erik T. Ray</author>
   <year>2003</year>
</book>

Beim Analysieren des oben dargestellten XML-Elements wird mit dem <Attribute>-Elementwert im Richtlinien-Snippet unten überprüft, ob der category-Attributname nicht länger als 10 Zeichen ist.

<NameLimits>
   <Element>10</Element>
   <Attribute>10</Attribute>
   <NamespacePrefix>10</NamespacePrefix>
   <ProcessingInstructionTarget>10</ProcessingInstructionTarget>     
</NameLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ: Ganzzahl

<NameLimits>/<NamespacePrefix>-Element

Gibt ein Limit für die maximal zulässige Anzahl an Zeichen im Namespace-Präfix im XML-Dokument an.

Betrachten Sie beispielsweise das folgende XML:

<ns1:myelem xmlns:ns1="http://ns1.com"/>

Beim Analysieren der oben angegebenen XML-Datei überprüft der Wert des <NamespacePrefix>-Elements im Richtlinien-Snippet unten, ob das Namespace-Präfix ns1 nicht mehr als 10 Zeichen umfasst.

<NameLimits>
   <Element>10</Element>
   <Attribute>10</Attribute>
   <NamespacePrefix>10</NamespacePrefix>
   <ProcessingInstructionTarget>10</ProcessingInstructionTarget>     
</NameLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ: Ganzzahl

<NameLimits>/<ProcessingInstructionTarget>-Element

Gibt ein Limit für die maximale Anzahl von Zeichen an, die im Ziel einer Verarbeitungsanleitung im XML-Dokument zulässig ist.

Betrachten Sie beispielsweise das folgende XML:

<?xml-stylesheet type="text/xsl" href="style.xsl"?>

Bei der obigen XML-Analyse wird durch den Elementwert <ProcessingInstructionTarget> im Richtlinien-Snippet unten überprüft, ob das Ziel der Verarbeitungsanweisung xml-stylesheet 10Zeichen nicht überschreitet.

<NameLimits>
   <Element>10</Element>
   <Attribute>10</Attribute>
   <NamespacePrefix>10</NamespacePrefix>
   <ProcessingInstructionTarget>10</ProcessingInstructionTarget>     
</NameLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ: Ganzzahl

<Source>-Element

Nachricht, die auf XML-Nutzlast-Angriffe geprüft werden soll. Dies ist meistens auf request gesetzt, da Sie in der Regel eingehende Anfragen von Clientanwendungen validieren müssen. Ist message festgelegt, bewertet dieses Element die Anfragenachricht automatisch, wenn sie an den Anfragefluss angehängt wird, und die Antwortnachricht, wenn sie an den Antwortfluss angehängt wird.

<Source>request</Source>
Standard: Anfrage
Präsenz: Optional
Typ:

String.

Wählen Sie request, response oder message aus.

<StructuralLimits>-Element

Gibt strukturelle Limits an, die von der Richtlinie geprüft und erzwungen werden sollen.

<StructureLimits>
   <NodeDepth>5</NodeDepth>
   <AttributeCountPerElement>2</AttributeCountPerElement>
   <NamespaceCountPerElement>3</NamespaceCountPerElement>
   <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
</StructureLimits>
Standard:
Präsenz: Optional
Typ:

<StructuralLimits>/<NodeDepth>-Element

Gibt die maximal zulässige Knotentiefe in der XML an.

<StructureLimits>
   <NodeDepth>5</NodeDepth>
   <AttributeCountPerElement>2</AttributeCountPerElement>
   <NamespaceCountPerElement>3</NamespaceCountPerElement>
   <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
</StructureLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ:

Ganzzahl

<StructuralLimits>/<AttributeCountPerElement>-Element

Gibt die maximal zulässige Anzahl an Attributen für jedes Element an.

Betrachten Sie beispielsweise das folgende XML:

<book category="WEB">
   <title>Learning XML</title>
   <author>Erik T. Ray</author>
   <year>2003</year>
</book>
Bei der Analyse der obigen XML-Datei wird der <AttributeCountPerElement>-Elementwert im Richtlinien-Snippet unten prüfen, ob die Elemente book, title, author und year haben jeweils nicht mehr als 2 Attribute. Beachten Sie, dass Attribute zum Definieren von Namespaces nicht gezählt werden.
<StructureLimits>
   <NodeDepth>5</NodeDepth>
   <AttributeCountPerElement>2</AttributeCountPerElement>
   <NamespaceCountPerElement>3</NamespaceCountPerElement>
   <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
</StructureLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ:

Ganzzahl

<StructuralLimits>/<NameSpaceCountPerElement>-Element

Gibt die maximal zulässige Anzahl von Namespace-Definitionen für jedes Element an.

Betrachten Sie beispielsweise das folgende XML:

<e1 attr1="val1" attr2="val2">
    <e2 xmlns="http://apigee.com" xmlns:yahoo="http://yahoo.com" one="1" yahoo:two="2"/>
</e1>

Beim Analysieren der oben angegebenen XML-Datei überprüft der Wert für das <NamespaceCountPerElement>-Element im Richtlinien-Snippet unten, ob die Elemente e1 und e2 nicht mehr als 2 Namespace-Definitionen enthalten. , um die Option zu aktivieren. In diesem Fall hat <e1> 0 Namespace-Definitionen und <e2> zwei Namespace-Definitionen: xmlns="http://apigee.com" und xmlns:yahoo="http://yahoo.com".

<StructureLimits>
   <NodeDepth>5</NodeDepth>
   <AttributeCountPerElement>2</AttributeCountPerElement>
   <NamespaceCountPerElement>3</NamespaceCountPerElement>
   <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
</StructureLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ:

Ganzzahl

<StructuralLimits>/<ChildCount> Element

Gibt die maximale Anzahl an untergeordneten Elementen für die einzelnen Elemente an.

<StructureLimits>
   <NodeDepth>5</NodeDepth>
   <AttributeCountPerElement>2</AttributeCountPerElement>
   <NamespaceCountPerElement>3</NamespaceCountPerElement>
   <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount>
</StructureLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ:

Ganzzahl

Attribute

Attribut Standard Präsenz
includeComment wahr Optional
includeElement wahr Optional
includeProcessingInstructions wahr Optional
includeText wahr Optional

<ValueLimits>-Element

Gibt Zeichenbeschränkungen für zu überprüfende und zu erzwingende Werte an.

<ValueLimits>
   <Text>15</Text>
   <Attribute>10</Attribute>
   <NamespaceURI>10</NamespaceURI>
   <Comment>10</Comment>
   <ProcessingInstructionData>10</ProcessingInstructionData>
</ValueLimits>
Standard:
Präsenz: Optional
Typ:

<ValueLimits>/<Text>-Element

Gibt eine Zeichenbeschränkung für alle im XML-Dokument vorhandenen Textknoten an.

Betrachten Sie beispielsweise das folgende XML:

<book category="WEB">
   <title>Learning XML</title>
   <author>Erik T. Ray</author>
   <year>2003</year>
</book>
Bei der Analyse der obigen XML-Datei wird der <Text>-Elementwert in der Richtlinie verwendet überprüft das Snippet unten, dass die Elementtextwerte Learning XML, Erik T. Ray, und 2003 jeweils 15 Zeichen nicht überschreiten.
<ValueLimits>
   <Text>15</Text>
   <Attribute>10</Attribute>
   <NamespaceURI>10</NamespaceURI>
   <Comment>10</Comment>
   <ProcessingInstructionData>10</ProcessingInstructionData>
</ValueLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ:

Ganzzahl

<ValueLimits>/<Attribute> Element

Gibt eine Zeichenbeschränkung für alle im XML-Dokument vorhandenen Attributwerte an.

Betrachten Sie beispielsweise das folgende XML:

<book category="WEB">
   <title>Learning XML</title>
   <author>Erik T. Ray</author>
   <year>2003</year>
</book>
Bei der Analyse der obigen XML-Datei wird der <Attribute>-Elementwert in der Richtlinie verwendet überprüft das Snippet unten, dass der Attributwert WEB die 10 Zeichen.
<ValueLimits>
   <Text>15</Text>
   <Attribute>10</Attribute>
   <NamespaceURI>10</NamespaceURI>
   <Comment>10</Comment>
   <ProcessingInstructionData>10</ProcessingInstructionData>
</ValueLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ:

Ganzzahl

<ValueLimits>/<NamespaceURI>-Element

Gibt eine Zeichenbeschränkung für alle Namespace-URIs im XML-Dokument an.

Betrachten Sie beispielsweise das folgende XML:

<ns1:myelem xmlns:ns1="http://ns1.com"/>
Bei der Analyse der obigen XML-Datei wird der Wert des <NamespaceURI>-Elements im wird durch das folgende Richtlinien-Snippet überprüft, ob der Namespace-URI-Wert http://ns1.com dürfen 10 Zeichen nicht überschreiten.
<ValueLimits>
   <Text>15</Text>
   <Attribute>10</Attribute>
   <NamespaceURI>10</NamespaceURI>
   <Comment>10</Comment>
   <ProcessingInstructionData>10</ProcessingInstructionData>
</ValueLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ:

Ganzzahl

<ValueLimits>/<Comment>-Element

Gibt eine Zeichenbeschränkung für alle vorhandenen XML-Dokumente an.

Betrachten Sie beispielsweise das folgende XML:

<book category="WEB">
   <!-- This is a comment -->
   <title>Learning XML</title>
   <author>Erik T. Ray</author>
   <year>2003</year>
</book>
Bei der Analyse der obigen XML-Datei wird der <Comment>-Elementwert in der Richtlinie verwendet überprüft das Snippet unten, dass der Kommentartext This is a comment die 10 Zeichen.
<ValueLimits>
   <Text>15</Text>
   <Attribute>10</Attribute>
   <NamespaceURI>10</NamespaceURI>
   <Comment>10</Comment>
   <ProcessingInstructionData>10</ProcessingInstructionData>
</ValueLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ:

Ganzzahl

<ValueLimits>/<ProcessingInstructionData>-Element

Gibt eine Zeichenbeschränkung für den Verarbeitungstext des XML-Dokuments an.

Betrachten Sie beispielsweise das folgende XML:

<?xml-stylesheet type="text/xsl" href="style.xsl"?>
Bei der Analyse der obigen XML-Datei wird das <ProcessingInstructionData>-Element im folgenden Richtlinien-Snippet wird überprüft, ob der Text der Verarbeitungsanweisung type="text/xsl" href="style.xsl" darf nicht länger als 10 Zeichen sein.
<ValueLimits>
   <Text>15</Text>
   <Attribute>10</Attribute>
   <NamespaceURI>10</NamespaceURI>
   <Comment>10</Comment>
   <ProcessingInstructionData>10</ProcessingInstructionData>
</ValueLimits>
Standard: Wenn Sie kein Limit angeben, wendet das System einen Standardwert -1 an, der vom System als "kein Limit" gedeutet wird.
Präsenz: Optional
Typ:

Ganzzahl

Fehlerreferenz

This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.

Runtime errors

These errors can occur when the policy executes.

Fault code HTTP status Cause Fix
steps.xmlthreatprotection.ExecutionFailed 500 The XMLThreatProtection policy can throw many different types of ExecutionFailed errors. Most of these errors occur when a specific threshold set in the policy is exceeded. These types of errors include: element name length, child count, node depth, attribute count, attribute name length, and many others. You can see the complete list in the XMLThreatProtection policy runtime error troubleshooting topic.
steps.xmlthreatprotection.InvalidXMLPayload 500 This error occurs if the input message payload specified by the XMLThreatProtection policy's <Source> element is not a valid XML Document.
steps.xmlthreatprotection.SourceUnavailable 500 This error occurs if the message variable specified in the <Source> element is either:
  • Out of scope (not available in the specific flow where the policy is being executed)
  • Is not one of the valid values request, response, or message
steps.xmlthreatprotection.NonMessageVariable 500 This error occurs if the <Source> element is set to a variable which is not of type message.

Notes:

  • The error name ExecutionFailed is the default error name and will be returned regardless of the type of error detected; however, this default can be changed by setting an organization-level property. When this property is set, the error name will reflect the actual error. For example, "TextExceeded" or "AttrValueExceeded". See Usage Notes for details.
  • The 500 HTTP status is the default; however, the HTTP Status can be changed to 400 for request flow faults by setting an organization-level property. See Usage Notes for details.

Deployment errors

None.

Fault variables

These variables are set when a runtime error occurs. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the Runtime errors table above. The fault name is the last part of the fault code. fault.name Matches "SourceUnavailable"
xmlattack.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. xmlattack.XPT-SecureRequest.failed = true

Example error response

{
  "fault": {
    "faultstring": "XMLThreatProtection[XPT-SecureRequest]: Execution failed. reason: XMLThreatProtection[XTP-SecureRequest]: Exceeded object entry name length at line 2",
    "detail": {
      "errorcode": "steps.xmlthreatprotection.ExecutionFailed"
    }
  }
}

Example fault rule

<FaultRule name="XML Threat Protection Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ExecutionFailed") </Condition>
    </Step>
    <Condition>(xmlattack.XPT-SecureRequest.failed = true) </Condition>
</FaultRule>

Schemas

Verwendungshinweise

Jeder Server, der Online-Daten empfängt, wird Angriffen entweder schädlich oder unbeabsichtigt ausgeführt. Einige Angriffe nutzen die Flexibilität von XML, indem sie ungültige Dokumente erstellen, die das Risiko von Back-End-Systemen beeinträchtigen können. Veraltete oder extrem komplexe XML-Dokumente können dazu führen, dass Server mehr Speicher zuweisen, als verfügbar ist, die CPU- und Speicherressourcen heraufsetzen, Parser abstürzen und die Nachrichtenverarbeitung deaktivieren und eine Ablehnung auf Anwendungsebene vornehmen. Dienstangriffen.

Bedrohungsschutzfehlerkonfiguration

Wichtige Informationen beim Erstellen von FaultRules für diese Richtlinie: standardmäßig, gibt Edge den Statuscode „HTTP 500 Internal Server Error“ und den Fehler ExecutionFailed aus wenn eine Nachricht die JSON- oder XML Threat Protection-Richtlinie nicht überschreitet. Sie können dieses Fehlerverhalten mit einer neuen Property auf Organisationsebene ändern. Wenn Sie das Organisationsattribut features.isPolicyHttpStatusEnabled auf "true" setzen, geschieht Folgendes:

  • Anfrage: Wenn eine Bedrohungsschutzrichtlinie an einen Anfrageablauf angehängt wird, geben ungültige Nachrichten einen 400 Bad Request-Statuscode zusammen mit einem entsprechenden Richtlinienfehlercode (und nicht nur ExecutionFailed) zurück.
  • Antwort: Wenn eine Bedrohungsschutzrichtlinie an einen Antwortablauf angehängt wird, wird bei ungültigen Nachrichten weiterhin der Statuscode 500 Interner Serverfehler zurückgegeben und einer der entsprechenden Richtlinienfehlercodes wird ausgegeben (statt nur "ExecutionFailed").

Cloud-Kunden müssen sich an den Apigee Edge-Support wenden, um die der Organisation.

<ph type="x-smartling-placeholder">

Weitere Informationen

JSON Threat Protection-Richtlinie

Regular Expression Protection-Richtlinie