Diese Seite gilt für Apigee und Apigee Hybrid.
Apigee Edge-Dokumentation aufrufen
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:
- Den Nachrichteninhalt auf bestimmte Keywords oder Muster prüfen, die ausgeschlossen werden sollen
- Fehlerhafte oder fehlgeformte Nachrichten vor dem Parsen analysieren
Diese Richtlinie ist eine erweiterbare Richtlinie und die Verwendung dieser Richtlinie kann je nach Apigee-Lizenz Auswirkungen auf die Kosten oder die Nutzung haben. Informationen zu Richtlinientypen und Auswirkungen auf die Nutzung finden Sie unter Richtlinientypen.
Kurzes Video zum Schutz vor Bedrohungen ansehen
Video: Schauen Sie sich ein kurzes Video über Richtlinien zum Schutz vor Bedrohungen aus der Reihe "Vier-Minuten-Videos für Entwickler (4MV4D)" an.
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 | Presence |
---|---|---|---|
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 | Verworfen |
<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>
Standard |
– Wenn Sie dieses Element weglassen, wird der Wert des Namensattributs |
---|---|
Presence | 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>
im Richtlinien-Snippet, ob die Elemente book
, title
, author
und year
jeweils nicht mehr als 2
Attribute haben.
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 | Presence |
---|---|---|
includeComment | true | Optional |
includeElement | true | Optional |
includeProcessingInstructions | true | Optional |
includeText | true | 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>
im Richtlinien-Snippet unten, ob 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>
-Element im Richtlinien-Snippet, ob der WEB
-Attributwert 10
Zeichen nicht überschreitet.
<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>
-Element im Richtlinien-Snippet unten, ob der Namespace-URI-Wert http://ns1.com
nicht länger als 10
Zeichen ist.
<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 im Richtlinien-Snippet unten überprüft, ob der Kommentartext This is a comment
nicht mehr als 10
Zeichen umfasst.
<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>
im Richtlinien-Snippet unten überprüft, ob der Text der Verarbeitungsanweisung type="text/xsl" href="style.xsl"
10
Zeichen nicht überschreitet.
<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
In diesem Abschnitt werden die zurückgegebenen Fehlercodes und Fehlermeldungen beschrieben, die von Apigee festgelegt werden, wenn die Richtlinie einen Fehler auslöst. Diese Informationen sind wichtig, wenn Sie Fehlerregeln zur Verarbeitung von Fehlern entwickeln. Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen und Fehler beheben.
Laufzeitfehler
Diese Fehler können bei Ausführung der Richtlinie auftreten.
Fehlercode | HTTP-Status | Ursache | Diverse Fehlerkorrekturen |
---|---|---|---|
steps.xmlthreatprotection.ExecutionFailed |
500 |
Die Richtlinie XMLThreatProtection kann viele verschiedene Arten von ExecutionFailed -Fehlern verursachen.
Die meisten dieser Fehler treten auf, wenn ein bestimmter Schwellenwert in der Richtlinie überschritten wird. Zu diesen Arten von Fehlern gehören: Länge des Elementnamens, Anzahl der untergeordneten Elemente, Knotentiefe, Anzahl der Attribute, Länge des Attributnamens und viele weitere. Die vollständige Liste finden Sie unter XML-Richtlinie zum Schutz vor Bedrohungen – Fehlerbehebung.
|
build |
steps.xmlthreatprotection.InvalidXMLPayload |
500 |
Dieser Fehler tritt auf, wenn die Nutzlast der Eingabenachricht, die durch das Element <Source> der -Richtlinie XMLThreatProtection angegeben wurde, kein gültiges XML-Dokument ist. |
build |
steps.xmlthreatprotection.SourceUnavailable |
500 |
Dieser Fehler tritt auf, wenn für die im Element <Source> angegebene Variable message eine der folgenden Aussagen gilt:
|
build |
steps.xmlthreatprotection.NonMessageVariable |
500 |
Dieser Fehler tritt auf, wenn das Element <Source> auf eine Variable mit einem anderen Typ als message gesetzt ist. |
build |
Bereitstellungsfehler
–
Fehlervariablen
Diese Variablen werden bei Laufzeitfehlern festgelegt. Weitere Informationen finden Sie unter Was Sie über Richtlinienfehler wissen müssen.
Variablen | Wo | Beispiel |
---|---|---|
fault.name="fault_name" |
fault_name ist der Name des Fehlers, der in der obigen Tabelle Laufzeitfehler aufgeführt ist. Der Fehlername ist der letzte Teil des Fehlercodes. | fault.name Matches "SourceUnavailable" |
xmlattack.policy_name.failed |
policy_name ist der benutzerdefinierte Name der Richtlinie, die den Fehler ausgelöst hat. | xmlattack.XPT-SecureRequest.failed = true |
Beispiel für eine Fehlerantwort
{ "fault": { "faultstring": "XMLThreatProtection[XPT-SecureRequest]: Execution failed. reason: XMLThreatProtection[XTP-SecureRequest]: Exceeded object entry name length at line 2", "detail": { "errorcode": "steps.xmlthreatprotection.ExecutionFailed" } } }
Beispiel für eine Fehlerregel
<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 zum Erstellen von FaultRules-Richtlinien für diese Richtlinie:Standardmäßig löst Apigee bei einem Fehler "HTTP 500 Internal Server Error Statuscode" und bei einem Fehler "ExecutionFailed" den Fehler aus. einer JSON- oder XML Threat Protection-Richtlinie. 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 Google Cloud Customer Care wenden, um das Organisationsattribut festzulegen.
curl -u email:password -X POST -H "Content-type:application/xml" http://host:8080/v1/o/myorg -d \ "<Organization type="trial" name="MyOrganization"> <Environments/> <Properties> <Property name="features.isPolicyHttpStatusEnabled">true</Property> ... </Properties> </Organization>"
Weitere Informationen
JSON Threat Protection-Richtlinie
Regular Expression Protection-Richtlinie