Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. info
Co
Wyodrębnia informacje z wiadomości (np. ścieżkę URI, parametr zapytania, nagłówek, parametr formularza, zmienną, ładunek XML lub ładunek JSON) i ocenia te treści na podstawie predefiniowanych wyrażeń regularnych. Jeśli którekolwiek z podanych wyrażeń regularnych przyjmie wartość true, wiadomość zostanie uznana za zagrożenie i odrzucona.
Filmy
Aby dowiedzieć się więcej o zasadach ochrony wyrażeń regularnych, obejrzyj poniższe filmy.
| Wideo | Opis |
|---|---|
| Ochrona przed atakami typu wstrzyknięcie kodu SQL (New Edge) | Chroń się przed atakami typu SQL injection, korzystając z zasad ochrony wyrażeń regularnych w interfejsie New Edge. |
| Ochrona przed atakami typu wstrzyknięcie kodu SQL (Classic Edge) | Chroń się przed atakami typu SQL injection za pomocą zasady ochrony wyrażeń regularnych w klasycznym interfejsie Edge. |
Przykłady
GitHub
Przykładowy kod regex-protection na GitHubie pokazuje, jak przechwytywać potencjalne ataki polegające na wstrzykiwaniu kodu SQL, które są przeprowadzane za pomocą parametru zapytania. Przykład ten ilustruje też dobrą praktykę ustawiania ogólnego stanu błędu 400, aby uniemożliwić hakerom uzyskanie z odpowiedzi przydatnych informacji.
Ochrona przed atakami typu „include” w JavaScript
<RegularExpressionProtection name="JsonPathRegExProtection"> <DisplayName>Regular Expression Protection 1</DisplayName> <Source>request</Source> <JSONPayload escapeSlashCharacter="true"> <JSONPath> <Expression>$</Expression> <Pattern><\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*> </Pattern> <Pattern>n\s*\\\\\s*slash</Pattern> <Pattern>n\s*\/\s*slash</Pattern> <Pattern>n\s*\\"\s*quotes</Pattern> <Pattern>n\s*\\b\s*space</Pattern> <Pattern>n\s*\\f\s*forwardfeed</Pattern> <Pattern>n\s*\\n\s*newline</Pattern> <Pattern>n\s*\\r\s*carria</Pattern> <Pattern>n\s*\\t\s*tab</Pattern> <Pattern>n\s*\\uFFFF\s*hex</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
Powyższy przykład pokazuje, jak używać zasady RegularExpressionProtection do sprawdzania ładunków JSON pod kątem ataków typu JavaScript include. W szczególności treść wyodrębniona przez <JSONPath>/<Expression> jest oceniana pod kątem wyrażenia regularnego w <JSONPath>/<Pattern>.
Jeśli wyrażenie regularne w <JSONPath>/<Pattern> zawiera znaki zarezerwowane w XML (", &, ', < lub .), musisz je zakodować w XML, zanim dodasz je do pliku konfiguracyjnego XML zasad. Na przykład w powyższym przykładzie wyrażenie regularne
<\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*> zostało zakodowane w XML jako
<\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*>.
Jeśli wyrażenie regularne zawiera ukośniki (/), musisz je wyłączyć, ustawiając atrybut <JSONPayload> escapeSlashCharacter na true.
Dopasowywanie bez rozróżniania wielkości liter
Dopasowywanie bez rozróżniania wielkości liter jest częstym przypadkiem użycia. Oto przykład, jak możesz to zrobić w wyrażeniu regularnym za pomocą konstrukcji (?i). W tym przykładzie wartością wyrażeń DELETE, delete i Delete będzie „true” (prawda).
<Pattern>[\s]*(?i)((delete)|(exec)|(drop\s*table)|(insert)|(shutdown)|(update)|(\bor\b))</Pattern>
Informacje o zasadach ochrony wyrażeń regularnych
Apigee Edge umożliwia konfigurowanie wyrażeń regularnych, które można oceniać w odniesieniu do ruchu API w czasie działania, aby identyfikować typowe zagrożenia na poziomie treści, które mają określone wzorce.
Wyrażenie regularne, w skrócie regex, to zbiór ciągów znaków, które określają wzorzec w ciągu znaków. Wyrażenia regularne umożliwiają programowe sprawdzanie treści pod kątem wzorców. Wyrażenia regularne można wykorzystać na przykład do sprawdzenia adresu e-mail, aby upewnić się, że ma prawidłową strukturę. Więcej informacji znajdziesz w artykule Wyrażenia regularne w samouczkach dotyczących Javy.
Najczęstszym zastosowaniem RegularExpressionProtection jest ocena ładunków JSON i XML pod kątem złośliwych treści.
Żadne wyrażenie regularne nie może wyeliminować wszystkich ataków opartych na treści, dlatego należy połączyć ze sobą wiele mechanizmów, aby zapewnić kompleksową ochronę. W tej sekcji opisujemy kilka zalecanych wzorców wykluczania treści.
Przykładowe wzorce wykluczeń
Wyrażenia regularne muszą być zakodowane w formacie XML w pliku konfiguracji XML zasad.
| Nazwa | Wyrażenie regularne |
|---|---|
| Wstrzyknięcie kodu SQL |
[\s]*((delete)|(exec)|(drop\s*table)|(insert)|(shutdown)|(update)|(\bor\b)) |
| Wstrzykiwanie instrukcji SSI |
<!--#(include|exec|echo|config|printenv)\s+.* Zakodowany w XML: <!--#(include|exec|echo|config|printenv)\s+.* |
| Wstrzykiwanie skróconej składni XPath |
(/(@?[\w_?\w:\*]+(\[[^]]+\])*)?)+ |
| Wstrzykiwanie rozszerzonej składni XPath |
/?(ancestor(-or-self)?|descendant(-or-self)?|following(-sibling)) |
| Wstrzyknięcie kodu JavaScript |
<\s*script\b[^>]*>[^<]+<\s*/\s*script\s*> Zakodowany w XML: <\s*script\b[^>]*>[^<]+<\s*/\s*script\s*> |
| Wstrzykiwanie wyjątków Java |
.*?Exception in thread.* |
Ustawianie nagłówka Content-Type w żądaniu z ładunkiem XML lub JSON
Ładunek zasad ochrony wyrażeń regularnych może zawierać te elementy:
-
Element
<XMLPayload>: określa, że informacje muszą zostać wyodrębnione z ładunku XML i sprawdzone pod kątem zgodności z podanym wyrażeniem regularnym.Jeśli w zasadach używasz symbolu
<XMLPayload>, nagłówekContent-Typew żądaniu musi mieć typ treści XML, np.application/xmllubtext/xml. -
<JSONPayload>element: określa, że informacje muszą zostać wyodrębnione z ładunku JSON i sprawdzone pod kątem zgodności z podanym wyrażeniem regularnym.Jeśli w zasadach używasz
<JSONPayload>, nagłówekContent-Typeżądania musi być typem treści JSON, np.application/json.
Zazwyczaj interfejs API jest projektowany tak, aby akceptować format XML lub JSON. Może jednak wystąpić sytuacja, w której interfejs API zaakceptuje oba te formaty. Możesz wtedy zdefiniować zasadę ochrony wyrażeń regularnych, która będzie używać elementów <XMLPayload> i <JSONPayload>.
W przypadku konkretnego żądania zastosowany zostanie tylko jeden element na podstawie wartości nagłówka Content-Type.
Odwołanie do elementu
Dokumentacja elementu zawiera opis elementów i atrybutów zasady RegularExpressionProtection.
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1"> <DisplayName>Regular Expression Protection 1</DisplayName> <Source>response</Source> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> <URIPath> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </URIPath> <QueryParam name="a-query-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </QueryParam> <Header name="a-header"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Header> <FormParam name="a-form-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </FormParam> <Variable name="request.content"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Variable> <XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload> <JSONPayload> <JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload> </RegularExpressionProtection>
Atrybuty <RegularExpressionProtection>
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
W tej tabeli opisano atrybuty wspólne dla wszystkich elementów nadrzędnych zasad:
| Atrybut | Opis | Domyślny | Obecność |
|---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw jako Ustaw jako |
fałsz | Opcjonalnie |
enabled |
Aby egzekwować zasadę, ustaw wartość Aby wyłączyć zasadę, ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
fałsz | Wycofano |
<DisplayName> element
Używaj oprócz atrybutu name do oznaczania zasady w
edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
| Domyślny |
Nie dotyczy Jeśli pominiesz ten element, atrybut |
|---|---|
| Obecność | Opcjonalnie |
| Typ | Ciąg znaków |
Element <Source>
Wskazuje wiadomość, z której należy wyodrębnić informacje.
Jeśli element <Source> zostanie pominięty, domyślna wartość to message. Na przykład: <Source>message</Source>. Gdy ta opcja ma wartość message, zasada używa wiadomości z żądaniem jako źródła, gdy jest dołączona do przepływu żądania. Podobnie zasada używa wiadomości z odpowiedzią, gdy jest dołączona do przepływu odpowiedzi.
Jeśli nie można rozpoznać wiadomości źródłowej lub jeśli jest ona innego typu niż wiadomość, zasady zwracają błąd.
<Source>response</Source>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Ciąg znaków |
Element <IgnoreUnresolvedVariables>
Określa, czy zasada zwraca błąd, gdy napotka zmienną, której nie można rozpoznać.
Jeśli zasada ma wartość false (domyślną), zwraca błąd, gdy napotka nierozwiązywalną zmienną. Jeśli ta opcja jest ustawiona na true, nierozwiązana zmienna jest traktowana jako pusty ciąg znaków (Null).
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
| Domyślnie: | fałsz |
| Obecność: | Opcjonalny |
| Typ: | Wartość logiczna |
Element <URIPath>
Określa, że informacje muszą być wyodrębnione ze ścieżki identyfikatora URI żądania i sprawdzone pod kątem podanych wyrażeń regularnych. Musisz podać co najmniej 1 element <Pattern> określający wzorzec wyrażenia regularnego do dopasowania.
<URIPath> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </URIPath>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Nie dotyczy |
Element <QueryParam>
Określa, że informacje należy wyodrębnić z parametru zapytania żądania i sprawdzić pod kątem podanych wyrażeń regularnych. Musisz podać co najmniej 1 element <Pattern> określający wzorzec wyrażenia regularnego do dopasowania.
<QueryParam name="a-query-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </QueryParam>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność |
|---|---|---|---|
| nazwa | Nazwa parametru zapytania w żądaniu, z którego należy wyodrębnić informacje do oceny na podstawie podanych wyrażeń regularnych. | Nie dotyczy | Wymagane |
Element <Header>
Określa, że informacje muszą zostać wyodrębnione z nagłówków żądania i odpowiedzi oraz sprawdzone pod kątem zgodności z podanymi wyrażeniami regularnymi. Musisz podać co najmniej 1 element <Pattern> określający wzorzec wyrażenia regularnego do dopasowania.
<Header name="a-header"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Header>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność |
|---|---|---|---|
| nazwa |
Nazwa nagłówka żądania i nagłówka odpowiedzi, z którego należy wyodrębnić informacje do oceny na podstawie podanych wyrażeń regularnych. |
Nie dotyczy | Wymagane |
Element <FormParam>
Określa, że informacje muszą zostać wyodrębnione z parametru formularza żądania i sprawdzone pod kątem zgodności z podanymi wyrażeniami regularnymi. Musisz podać co najmniej 1 element <Pattern> określający wzorzec wyrażenia regularnego do dopasowania.
<FormParam name="a-form-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </FormParam>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność |
|---|---|---|---|
| nazwa |
Nazwa parametru formularza żądania, z którego należy wyodrębnić informacje do oceny na podstawie podanych wyrażeń regularnych. |
Nie dotyczy | Wymagane |
Element <Variable>
Określa, że informacje muszą zostać wyodrębnione z danej zmiennej i sprawdzone pod kątem podanych wyrażeń regularnych.
<Variable name="request.content"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Variable>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność |
|---|---|---|---|
| nazwa |
Nazwa zmiennej, z której należy wyodrębnić informacje do oceny na podstawie podanych wyrażeń regularnych. |
Nie dotyczy | Wymagane |
Element <XMLPayload>
Określa, że informacje muszą zostać wyodrębnione z ładunku XML i sprawdzone pod kątem podanych wyrażeń regularnych.
<XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Nie dotyczy |
Element <XMLPayload>/<Namespaces>
Określa przestrzenie nazw, które mają być używane w ocenie XPath.
<XMLPayload> <Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces> <XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath> </XMLPayload>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Ciąg znaków |
Element <XMLPayload>/<Namespaces>/<Namespace>
Określa każdą przestrzeń nazw, która ma być używana w ocenie XPath.<Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Ciąg znaków |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność |
|---|---|---|---|
| prefiks |
Zawiera prefiks, który pomaga określić daną przestrzeń nazw. |
Nie dotyczy | Wymagane |
Element <XMLPayload>/<XPath>
Określa wyrażenie XPath do oceny.<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Nie dotyczy |
Element <XMLPayload>/<XPath>/<Expression>
Określa wyrażenie XPath zdefiniowane dla zmiennej. Obsługiwane są tylko wyrażenia XPath 1.0. Na przykład<Expression>/company/employee[@age>=$request.header.age]</Expression>
wyodrębnia szczegóły pracowników, których wiek jest większy lub równy wartości podanej w request.header.age.<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Ciąg znaków |
Element <XMLPayload>/<XPath>/<Type>
Określa typ danych.<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
| Domyślnie: | tekst |
| Obecność: | Opcjonalny |
| Typ: | Ciąg znaków |
| Prawidłowe wartości: |
Ciąg tekstowy. Prawidłowe wartości to |
Element <XMLPayload>/<XPath>/<Pattern>
Definiuje wzorzec wyrażenia regularnego. Jeśli wyrażenie regularne w elemencie
Twojego<Pattern> pliku zawiera znaki zarezerwowane w XML (", &, ', < lub
.), musisz je zakodować w XML przed dodaniem.
<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
| Domyślnie: | Nie dotyczy |
| Obecność: | Wymagane |
| Typ: | Ciąg znaków |
Element <JSONPayload>
Określa, że informacje muszą zostać wyodrębnione z ładunku JSON i ocenione na podstawie podanych wyrażeń regularnych.
<JSONPayload> <JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Nie dotyczy |
Atrybuty
| Atrybut | Opis | Domyślny | Obecność |
|---|---|---|---|
| escapeSlashCharacter |
Ustaw wartość |
prawda | Opcjonalny |
Element <JSONPayload>/<JSONPath>/<Expression>
Określa wyrażenie JSONPath zdefiniowane dla zmiennej.
<JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath>
| Domyślnie: | Nie dotyczy |
| Obecność: | Opcjonalny |
| Typ: | Ciąg znaków |
Element <JSONPayload>/<JSONPath>/<Pattern>
Definiuje wzorzec wyrażenia regularnego. Jeśli wyrażenie regularne w elemencie <Pattern> zawiera znaki zarezerwowane w XML (", &, ', < lub .), musisz je zakodować w XML przed dodaniem.
<JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath>
| Domyślnie: | Nie dotyczy |
| Obecność: | Wymagane |
| Typ: | Ciąg znaków |
Odwołanie do błędu
W tej sekcji opisujemy kody błędów, zwracane komunikaty i zmienne błędów ustawione przez Edge, gdy ta zasada wywołuje błąd. Te informacje są ważne, aby wiedzieć, czy opracowujesz reguły dotyczące błędów w przypadku błędów. Jeśli chcesz przechwycić błąd i zgłosić własny błąd niestandardowy, ustaw atrybut continueOnError="true" w głównym elemencie zasad.
Więcej informacji znajdziesz w sekcjach
Co musisz wiedzieć o błędach zasad i Postępowanie w przypadku błędów.
Błędy zwracane z zasad Edge mają spójny format opisany w Informacjach na temat kodów błędów.
Błędy w czasie wykonywania
Te błędy mogą wystąpić podczas wykonywania zasady.
| Kod błędu | przekaz, |
|---|---|
| ExecutionFailed | Nie udało się wykonać definicji kroku RegularExpressionProtection {0}. Przyczyna: {1} |
| InstantiationFailed | Nie udało się utworzyć instancji kroku definicji kroku RegularExpressionProtection {0} |
| NonMessageVariable | Zmienna {0} nie przyjmuje wartości do komunikatu |
| SourceMessageNotAvailable | Komunikat {0} nie jest dostępny dla określenia kroków definicji kroków RegularExpressionProtection {1} |
| ThreatDetected | Wykryto zagrożenie związane z wyrażeniem regularnym w {0}: wyrażenie regularne: {1} wejściowe: {2} |
| VariableResolutionFailed | Nie udało się znaleźć zmiennej {0} |
Błędy wdrażania
| Kod błędu | przekaz, | Napraw |
|---|---|---|
| CannotBeConvertedToNodeset | RegularExpressionProtection {0}: wynik funkcji xpath {1} nie może zostać przekonwertowany na zbiór węzłów. Kontekst {2} | build |
| DuplicatePrefix | RegularExpressionProtection {0}: zduplikowany prefiks {1} | build |
| EmptyJSONPathExpression | RegularExpressionProtection{0}: puste wyrażenie JSONPath | build |
| EmptyXPathExpression | RegularExpressionProtection{0}: puste wyrażenie XPath | build |
| InvalidRegularExpression | RegularExpressionProtection {0}: nieprawidłowe wyrażenie regularne {1}, kontekst {2} | build |
| JSONPathCompilationFailed | RegularExpressionProtection {0}: nie udało się skompilować obiektu jsonpath {1}. Kontekst {2} | build |
| NONPusty przedrostek mapowany do pustego identyfikatora URI | RegularExpressionProtection {0}: niepustego prefiksu {1} nie można zmapować na pusty identyfikator URI | build |
| NoPatternsToEnforce | RegularExpressionProtection {0}: brak wzorców do wyegzekwowania w {1} | build |
| NothingToEnforce | RegularExpressionProtection{0}: co najmniej jedna z tych wartości: URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload | build |
| XPathCompilationFailed | RegularExpressionProtection {0}: nie udało się skompilować pliku xpath {1}. Kontekst {2} | build |
Zmienne błędów
Te zmienne są ustawiane, gdy zasada wywołuje błąd. Więcej informacji znajdziesz w artykule Co musisz wiedzieć o błędach związanych z naruszeniem zasad.
| Zmienne | Gdzie | Przykład |
|---|---|---|
fault.name="fault_name" |
fault_name to nazwa błędu podana w tabeli powyżej. | fault.name Matches "ThreatDetected" |
regularexpressionprotection.policy_name.failed |
policy_name to określona przez użytkownika nazwa zasady, która spowodowała błąd. | regularexpressionprotection.Regular-Expressions-Protection-1.failed = true |