Oglądasz dokumentację Apigee Edge.
Wyświetl dokumentację Apigee X.

Co
Minimalizuje ryzyko związane z atakami na poziomie treści, umożliwiając określanie ograniczeń dla różnych struktur JSON, takich jak tablice i ciągi.
Film: Obejrzyj krótki film, aby dowiedzieć się więcej o tym, jak zasada JSONThreatProtection umożliwia ochronę interfejsów API przed atakami na poziomie treści.
Film: Obejrzyj ten krótki film na platformie Apigee Cross-Cloud API.
Dokumentacja elementu
Odwołanie do elementu opisuje elementy i atrybuty zasady JSONThreatProtection.
<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>
Atrybuty <JSONThreatProtection>
<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
Tabela poniżej opisuje atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:
Atrybut | Opis | Domyślnie | Obecność |
---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie użyj elementu |
Nie dotyczy | Wymagany |
continueOnError |
Ustaw wartość Ustaw wartość |
fałsz | Opcjonalnie |
enabled |
Ustaw jako Ustaw zasadę |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
Element <DisplayName>
Używaj atrybutu name
tak, aby oznaczyć zasadę w edytorze proxy interfejsu zarządzania inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
Domyślnie |
Nie dotyczy Jeśli pominiesz ten element, zostanie użyta wartość atrybutu |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Element <ArrayElementCount>
Określa maksymalną liczbę elementów dozwolonych w tablicy.
<ArrayElementCount>20</ArrayElementCount>
Domyślne: | Jeśli nie określisz tego elementu lub określisz ujemną liczbę całkowitą, system nie będzie egzekwować limitu. |
Obecność: | Opcjonalnie |
Typ: | Liczba całkowita |
Element <ContainerDepth>
Określa maksymalną dozwoloną głębokość izolacji, w której kontenery są obiektami lub tablicami. Na przykład tablica z obiektem zawierającym obiekt spowodowałaby 3 głębokości w kontenerze.
<ContainerDepth>10</ContainerDepth>
Domyślne: | Jeśli nie określisz tego elementu lub podasz ujemną liczbę całkowitą, system nie będzie egzekwować limitu. |
Obecność: | Opcjonalnie |
Typ: | Liczba całkowita |
Element <ObjectEntryCount>
Określa maksymalną dozwoloną liczbę wpisów w obiekcie.
<ObjectEntryCount>15</ObjectEntryCount>
Domyślne: | Jeśli nie określisz tego elementu lub podasz ujemną liczbę całkowitą, system nie będzie egzekwować limitu. |
Obecność: | Opcjonalnie |
Typ: | Liczba całkowita |
Element <ObjectEntryNameLength>
Określa maksymalną długość ciągu znaków w nazwie właściwości podanej w obiekcie.
<ObjectEntryNameLength>50</ObjectEntryNameLength>
Domyślne: | Jeśli nie określisz tego elementu lub określisz ujemną liczbę całkowitą, system nie będzie egzekwować limitu. |
Obecność: | Opcjonalnie |
Typ: | Liczba całkowita |
Element <Source>
Wiadomość do sprawdzenia pod kątem ataków ładunku JSON. Zwykle jest to request
, ponieważ zwykle trzeba weryfikować żądania przychodzące z aplikacji klienckich.
Gdy ustawiona jest wartość message
, ten element automatycznie ocenia komunikat z żądaniem, gdy jest dołączony do przepływu żądania, oraz wiadomość z odpowiedzią po dołączeniu do przepływu odpowiedzi.
<Source>request</Source>
Domyślne: | Poproś |
Obecność: | Opcjonalnie |
Typ: |
Ciąg tekstowy. Prawidłowe wartości: request, response lub message. |
Element <StringValueLength>
Określa maksymalną dozwoloną wartość wartości ciągu.
<StringValueLength>500</StringValueLength>
Domyślne: | Jeśli nie określisz tego elementu lub określisz ujemną liczbę całkowitą, system nie będzie egzekwować limitu. |
Obecność: | Opcjonalnie |
Typ: | Liczba całkowita |
Dokumentacja błędu
W tej sekcji opisano kody błędów i komunikaty o błędach, które są zwracane, a także wartości zmiennych ustawionych przez Edge w momencie aktywowania tej zasady. Ta informacja jest ważna, gdy opracowujesz reguły obsługi błędów. Więcej informacji znajdziesz w artykułach Co musisz wiedzieć o błędach zasad i Obsługa błędów.
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady.
Kod błędu | Stan HTTP | Przyczyna | Napraw |
---|---|---|---|
steps.jsonthreatprotection.ExecutionFailed |
500 | Zasada JSONThreatProtection może zwracać wiele różnych typów błędów ExecutionFailed. Większość tych błędów występuje, gdy przekroczysz określony próg określony w zasadach. Te typy błędów to: liczba wpisów nazwy obiektu, liczba wpisów obiektów, liczba elementów tablicy, głębokość kontenera, długość wartości ciągu znaków. Ten błąd występuje również wtedy, gdy ładunek zawiera nieprawidłowy obiekt JSON. | build |
steps.jsonthreatprotection.SourceUnavailable |
500 |
Ten błąd występuje wtedy, gdy zmienna message określona w elemencie <Source> jest:
|
build |
steps.jsonthreatprotection.NonMessageVariable |
500 |
Ten błąd występuje, jeśli element <Source> jest ustawiony na zmienną, która nie jest typu message.
|
build |
Błędy wdrażania
Brak.
Zmienne błędów
Zmienne te są ustawiane, gdy zasada powoduje błąd. Więcej informacji znajdziesz w artykule Co musisz wiedzieć o błędach zasad.
Zmienne | Gdzie | Przykład |
---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu, zgodnie z tabelą Błędy środowiska wykonawczego. Nazwa błędu jest ostatnią częścią kodu błędu. | fault.name Matches "SourceUnavailable" |
jsonattack.policy_name.failed |
policy_name to określona przez użytkownika nazwa zasady, która spowodowała błąd. | jsonattack.JTP-SecureRequest.failed = true |
Przykładowa odpowiedź na błąd
{ "fault": { "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2", "detail": { "errorcode": "steps.jsonthreatprotection.ExecutionFailed" } } }
Przykładowa reguła awarii
<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>
Schematy
Zastosowanie
Podobnie jak usługi oparte na języku XML, interfejsy API obsługujące zapis obiektów JavaScript (JSON) mogą być podatne na ataki na poziomie treści. Proste ataki JSON próbują używać struktur, które blokują parsery JSON, aby przeprowadzać awarie usługi i wywoływać ataki typu „odmowa usługi” na poziomie aplikacji. Wszystkie ustawienia są opcjonalne i zoptymalizowane pod kątem optymalizacji pod kątem potencjalnych luk w zabezpieczeniach.