JSONThreatProtection-Richtlinie

Diese Seite gilt für Apigee und Apigee Hybrid.

Apigee Edge-Dokumentation aufrufen

Richtliniensymbol

Was

Reduziert das durch Angriffe auf Inhaltsebene bedingte Risiko, da Sie Limits für verschiedene JSON-Strukturen wie Arrays und Strings festlegen können.

Diese Richtlinie ist eine erweiterbare Richtlinie, deren Verwendung je nach Apigee-Lizenz Auswirkungen auf die Kosten oder die Nutzung haben kann. Informationen zu Richtlinientypen und Auswirkungen auf die Nutzung finden Sie unter Richtlinientypen.

Video: Ein kurzes Video zeigt, wie Sie APIs mit der JSONThreatProtection-Richtlinie vor Angriffen auf Inhaltsebene schützen.

Video: Sehen Sie sich dieses kurze Video auf der cloudübergreifenden API-Plattform von Apigee an.

Elementverweis

Die Elementreferenz beschreibt die Elemente und Attribute der "JSONThreatProtection"-Richtlinie.

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
   <DisplayName>JSONThreatProtection 1</DisplayName>
   <ArrayElementCount>20</ArrayElementCount>
   <ContainerDepth>10</ContainerDepth>
   <ObjectEntryCount>15</ObjectEntryCount>
   <ObjectEntryNameLength>50</ObjectEntryNameLength>
   <Source>request</Source>
   <StringValueLength>500</StringValueLength>
</JSONThreatProtection>

<JSONThreatProtection>-Attribute

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-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 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. Siehe auch:

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 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 name der Richtlinie verwendet.

Presence Optional
Typ String

<ArrayElementCount>-Element

Gibt die maximale Anzahl der in einem Array zulässigen Elemente an.

<ArrayElementCount>20</ArrayElementCount>
Standard: Wenn Sie dieses Element nicht angeben oder eine negative Ganzzahl angeben, erzwingt das System keine Beschränkung.
Präsenz: Optional
Typ: Ganzzahl

<ContainerDepth>-Element

Gibt die maximal zulässige Eingrenzungstiefe an, wobei die Container Objekte oder Arrays sind. Beispiel: Ein Array mit einem Objekt, das ein Objekt enthält, führt zu einer Eingrenzungstiefe von 3.

<ContainerDepth>10</ContainerDepth>
Standard: Wenn Sie dieses Element nicht angeben oder eine negative Ganzzahl angeben, erzwingt das System keine Beschränkung.
Präsenz: Optional
Typ: Ganzzahl

<ObjectEntryCount>-Element

Gibt die maximal zulässige Anzahl von Einträgen in einem Objekt an.

<ObjectEntryCount>15</ObjectEntryCount>
Standard: Wenn Sie dieses Element nicht angeben oder eine negative Ganzzahl angeben, erzwingt das System keine Beschränkung.
Präsenz: Optional
Typ: Ganzzahl

{ObjectEntryNameLength}-Element

Gibt die maximal zulässige Stringlänge für Attributnamen in Objekten an.

<ObjectEntryNameLength>50</ObjectEntryNameLength>
Standard: Wenn Sie dieses Element nicht angeben oder eine negative Ganzzahl angeben, erzwingt das System keine Beschränkung.
Präsenz: Optional
Typ: Ganzzahl

<Source>-Element

Auf JSON-Nutzlastangriffe zu prüfende Nachricht. Dies ist meistens auf request gesetzt, da Sie in der Regel eingehende Anfragen von Client-Apps 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.

Gültige Werte: Anfrage, Antwort oder Nachricht.

<StringValueLength>-Element

Gibt die maximal zulässige Länge für einen Stringwert an.

<StringValueLength>500</StringValueLength>
Standard: Wenn Sie dieses Element nicht angeben oder eine negative Ganzzahl angeben, erzwingt das System keine Beschränkung.
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.jsonthreatprotection.ExecutionFailed 500 Die Richtlinie JSONThreatProtection 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 Objekteintrags ,Anzahl der Objekteinträge ,Anzahl der Arrayelemente ,Containertiefe ,Stringstring-Stringlänge Dieser Fehler tritt auch auf, wenn die Nutzlast ein ungültiges JSON-Objekt enthält.
steps.jsonthreatprotection.SourceUnavailable 500 Dieser Fehler tritt auf, wenn für die im Element <Source> angegebene Variable message eine der folgenden Aussagen gilt:
  • Der Wert liegt außerhalb des Bereichs (ist nicht in dem spezifischen Ablauf verfügbar, in dem die Richtlinie ausgeführt wird)
  • Sie hat keinen der gültigen Werte request, response oder message.
steps.jsonthreatprotection.NonMessageVariable 500 Dieser Fehler tritt auf, wenn das Element <Source> auf eine Variable mit einem anderen Typ als message gesetzt ist.

Bereitstellungsfehler

Fehlervariablen

Diese Variablen werden festgelegt, wenn die Richtlinie einen Fehler auslöst. Weitere Informationen finden sich 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"
jsonattack.policy_name.failed policy_name ist der benutzerdefinierte Name der Richtlinie, die den Fehler ausgelöst hat. jsonattack.JTP-SecureRequest.failed = true

Beispiel für eine Fehlerantwort

{
  "fault": {
    "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2",
    "detail": {
      "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
    }
  }
}

Beispiel für eine Fehlerregel

<FaultRule name="JSONThreatProtection Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ExecutionFailed") </Condition>
    </Step>
    <Condition>(jsonattack.JPT-SecureRequest.failed = true) </Condition>
</FaultRule>

Schemas

Verwendungshinweise

Ebenso wie XML-basierte Dienste sind APIs, die die JavaScript-Objektnotation (JSON) unterstützen, für Angriffe auf Inhaltsebene anfällig. Einfache JSON-Angriffe versuchen, Strukturen zu verwenden, die JSON-Parser überfordern, einen Dienst abstürzen zu lassen und Denial of Service-Angriffe auf Anwendungsebene auszulösen. Alle Einstellungen sind optional und müssen optimiert werden, um Ihre Dienstanforderungen im Hinblick auf potenzielle Sicherheitslücken zu optimieren.

Weitere Informationen

JSONtoXML-Richtlinie

XMLThreatProtection-Richtlinie

RegularExpressionProtection-Richtlinie