<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 Optional können Sie das Element |
– | Erforderlich |
continueOnError |
Legen Sie Legen Sie |
false | Optional |
enabled |
Setzen Sie den Wert auf Legen Sie |
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 |
---|---|
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
10
Zeichen 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 |
<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>
<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>
<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>
<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"/>
<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>
<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"?>
<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. | build |
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.
|
build |
steps.xmlthreatprotection.SourceUnavailable |
500 |
This error occurs if the message
variable specified in the <Source> element is either:
|
build |
steps.xmlthreatprotection.NonMessageVariable |
500 |
This error occurs if the <Source> element is set to a variable which
is not of type
message.
|
build |
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">