Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X. Informacje
![](https://docs.apigee.com/static/api-platform/images/icon_policy_threat-protection.jpg?hl=pl)
Co
Wyodrębnia informacje z wiadomości (np. ścieżka URI, parametr zapytania, nagłówek, parametr formularza, zmienna, ładunek XML lub ładunek JSON) i ocenia tę treść pod kątem zdefiniowanych wstępnie wyrażeń regularnych. Jeśli dowolne z określonych wyrażeń regularnych otrzyma wartość prawda, 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 wstrzykniętymi SQL (nowa wersja Edge) | Ochrona przed atakami wstrzykniętymi SQL za pomocą zasady ochrony wyrażeń regularnych w interfejsie nowego interfejsu Edge. |
Ochrona przed atakami wstrzykniętymi SQL (klasyczna wersja Edge) | Ochrona przed atakami wstrzykniętymi SQL za pomocą zasady ochrony wyrażeń regularnych w klasycznym interfejsie użytkownika Edge. |
Sample
GitHub
Przykład zabezpieczenia przed wyrażeniami regularnymi na GitHubie pokazuje, jak przechwytywać potencjalne ataki wstrzykniętego kodu SQL wykonywane przez parametr zapytania. Przykład pokazuje też sprawdzoną metodę ustawiania ogólnego stanu błędu 400, by hakerzy nie wydobyli z odpowiedzi żadnych przydatnych informacji.
JavaScript obejmuje ochronę przed atakami
<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>
Przykład powyżej pokazuje, jak użyć zasady RegularExpressionProtection do oceny ładunków JSON pod kątem ataków JavaScript. W szczególności treści wyodrębnione przez <JSONPath>
/<Expression>
są porównywane z wyrażeniem regularnym w <JSONPath>
/<Pattern>
.
Jeśli wyrażenie regularne w <JSONPath>
/<Pattern>
zawiera znaki zarezerwowane w formacie XML („, &, ', < lub .), musisz je zakodować w formacie XML, zanim umieścisz je w pliku konfiguracji zasad XML. Na przykład w powyższym przykładzie wyrażenie regularne <\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*>
zostało zakodowane w formacie XML jako <\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*>
.
Poza tym, jeśli wyrażenie regularne zawiera ukośniki (/), musisz zmienić ich znaczenie, ustawiając dla atrybutu <JSONPayload>
escapeSlashCharacter
wartość true
.
Dopasowywanie bez rozróżniania wielkości liter
Jest to typowy przypadek użycia w przypadku dopasowywania bez rozróżniania wielkości liter. Oto przykład, jak można to zrobić w wyrażeniu regularnym za pomocą konstruktora (?i)
. W tym przykładzie na przykład wartości DELETE
, delete
i Delete
będą mieć wartość 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ć pod kątem ruchu interfejsu API w czasie działania w celu identyfikacji typowych zagrożeń na poziomie treści zgodnych z określonymi wzorcami.
Wyrażenie regularne (w skrócie wyrażenie regularne) to zestaw ciągów znaków określających wzorzec. Wyrażenia regularne umożliwiają automatyczną ocenę treści pod kątem wzorców. Wyrażenia regularne mogą posłużyć na przykład do sprawdzenia, czy adres e-mail ma prawidłową strukturę. Więcej informacji znajdziesz w sekcji Wyrażenia regularne w samouczku Javy.
Najczęściej używane jest RegularExpressionProtection do oceny ładunków JSON i XML pod kątem szkodliwych treści.
Żadne wyrażenie regularne nie wyeliminuje wszystkich ataków opartych na treściach, a my należy połączyć wiele mechanizmów, aby zapewnić dogłębną obronę. W tej sekcji opisujemy kilka zalecanych wzorców do wykluczania treści.
Przykładowe wzorce wykluczania
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)) |
Wstrzyknięcie po stronie serwera |
<!--#(include|exec|echo|config|printenv)\s+.* Kodowanie XML: <!--#(include|exec|echo|config|printenv)\s+.* |
Wstrzyknięcie skróconej składni XPath |
(/(@?[\w_?\w:\*]+(\[[^]]+\])*)?)+ |
Wstrzyknięcie rozszerzonej składni XPath |
/?(ancestor(-or-self)?|descendant(-or-self)?|following(-sibling)) |
Wstrzyknięcie kodu JavaScript |
<\s*script\b[^>]*>[^<]+<\s*/\s*script\s*> Kodowanie XML: <\s*script\b[^>]*>[^<]+<\s*/\s*script\s*> |
Wstrzyknięcie wyjątków Java |
.*?Exception in thread.* |
Ustawianie nagłówka Content-Type w żądaniu z ładunkiem XML lub JSON
Ładunek w zasadach ochrony wyrażeń regularnych może zawierać te elementy:
-
Element
<XMLPayload>
: określa, że informacje należy wyodrębnić z ładunku XML i ocenić za pomocą podanego wyrażenia regularnego.Jeśli w zasadzie używasz atrybutu
<XMLPayload>
, nagłówekContent-Type
żądania musi być typem treści XML, takim jakapplication/xml
lubtext/xml
. -
Element
<JSONPayload>
: określa, że informacje należy wyodrębnić z ładunku JSON i ocenić za pomocą podanego wyrażenia regularnego.Jeśli w zasadzie używasz
<JSONPayload>
, nagłówekContent-Type
żądania musi być typem treści JSON, np.application/json
.
Zazwyczaj projektujesz interfejs API tak, by akceptował XML lub JSON. Może się jednak zdarzyć, że interfejs API zaakceptuje oba te elementy. Następnie możesz zdefiniować zasadę ochrony wyrażeń regularnych, która będzie zawierać zarówno elementy <XMLPayload>
, jak i <JSONPayload>
.
Na podstawie wartości nagłówka Content-Type
do określonego żądania zostanie zastosowany tylko 1 element.
Odwołanie do elementu
Dokumentacja elementów opisuje elementy i atrybuty 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">
Tabela poniżej zawiera opis atrybutów wspólnych dla wszystkich elementów nadrzędnych zasad:
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
name |
Wewnętrzna nazwa zasady. Wartość atrybutu Opcjonalnie możesz użyć elementu |
Nie dotyczy | Wymagane |
continueOnError |
Ustaw wartość Ustaw jako |
false | Opcjonalnie |
enabled |
Ustaw jako Ustaw wartość |
prawda | Opcjonalnie |
async |
Ten atrybut został wycofany. |
false | Wycofano |
Element <DisplayName>
Użyj oprócz atrybutu name
, aby oznaczyć zasadę w edytorze serwera proxy interfejsu zarządzania inną nazwą w języku naturalnym.
<DisplayName>Policy Display Name</DisplayName>
Domyślne |
Nie dotyczy Jeśli pominiesz ten element, zostanie użyta wartość atrybutu |
---|---|
Obecność | Opcjonalnie |
Typ | Ciąg znaków |
Element <Source>
Wskazuje komunikat, z którego należy wyodrębnić informacje.
Jeśli pominiesz element <Source>
, wartość domyślna to message
. Na przykład: <Source>message</Source>
. Gdy ma wartość message
, po dołączeniu do przepływu żądania zasada używa komunikatu żądania jako źródła. Podobnie zasada używa wiadomości z odpowiedzią dołączonej do procesu odpowiedzi.
Jeśli nie można rozwiązać problemu lub jeśli zostanie wyświetlony typ inny niż wiadomość, zasada zwraca błąd.
<Source>response</Source>
Domyślnie: | Nie dotyczy |
Obecność: | Opcjonalnie |
Typ: | Ciąg znaków |
Element <IgnorujNierozpoznane zmienne>
Określa, czy zasada zwraca błąd, gdy napotka niemożliwą do rozpoznania zmienną.
Jeśli zasada ma wartość false
(domyślną), w przypadku wystąpienia nierozstrzygniętej zmiennej zwracany jest błąd. Jeśli ma wartość true
, nierozstrzygnięta zmienna jest traktowana jako pusty ciąg znaków (Null).
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Domyślnie: | false |
Obecność: | Opcjonalnie |
Typ: | Wartość logiczna |
Element <uriPath>
Określa, że informacje trzeba wyodrębnić ze ścieżki identyfikatora URI żądania i sprawdzić je za pomocą podanych wyrażeń regularnych. Musisz podać co najmniej 1 element <Pattern>
z określonym wzorcem dopasowania wyrażenia regularnego.
<URIPath> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </URIPath>
Domyślnie: | Nie dotyczy |
Obecność: | Opcjonalnie |
Typ: | Nie dotyczy |
Element <QueryParam>
Określa, że informacje muszą zostać wyodrębnione z parametru zapytania żądania i oceniane na podstawie podanych wyrażeń regularnych. Musisz podać co najmniej 1 element <Pattern>
z określonym wzorcem dopasowania wyrażenia regularnego.
<QueryParam name="a-query-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </QueryParam>
Domyślnie: | Nie dotyczy |
Obecność: | Opcjonalnie |
Typ: | Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
nazwa | Nazwa parametru zapytania żądania, z którego trzeba wyodrębnić informacje do oceny pod kątem 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 oceniane na podstawie podanych wyrażeń regularnych. Musisz podać co najmniej 1 element <Pattern>
z określonym wzorcem dopasowania wyrażenia regularnego.
<Header name="a-header"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Header>
Domyślnie: | Nie dotyczy |
Obecność: | Opcjonalnie |
Typ: | Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
nazwa |
Nazwa nagłówka żądania i odpowiedzi, z których należy wyodrębnić informacje do oceny pod kątem podanych wyrażeń regularnych. |
Nie dotyczy | Wymagane |
Element <FormParam>
Określa, że informacje trzeba wyodrębnić z parametru formularza żądania i sprawdzić je za pomocą podanych wyrażeń regularnych. Musisz podać co najmniej 1 element <Pattern>
z określonym wzorcem dopasowania wyrażenia regularnego.
<FormParam name="a-form-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </FormParam>
Domyślnie: | Nie dotyczy |
Obecność: | Opcjonalnie |
Typ: | Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
nazwa |
Nazwa parametru formularza żądania, z którego należy wyodrębnić informacje do oceny pod kątem podanych wyrażeń regularnych. |
Nie dotyczy | Wymagane |
Element <Zmienna>
Określa, że informacje trzeba wyodrębnić z danej zmiennej i ocenić na podstawie podanych wyrażeń regularnych.
<Variable name="request.content"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Variable>
Domyślnie: | Nie dotyczy |
Obecność: | Opcjonalnie |
Typ: | Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
nazwa |
Nazwa zmiennej, z której trzeba wyodrębnić informacje do oceny pod kątem podanych wyrażeń regularnych. |
Nie dotyczy | Wymagane |
Element <XMLPayload>
Określa, że informacje muszą zostać wyodrębnione z ładunku XML i ocenione za pomocą dostępnych 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ść: | Opcjonalnie |
Typ: | Nie dotyczy |
Element <XMLPayload>/<Namespaces>
Określa przestrzenie nazw do użycia podczas oceny 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ść: | Opcjonalnie |
Typ: | Ciąg znaków |
Element <XMLPayload>/<przestrzenie nazw>/<przestrzeni nazw>
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ść: | Opcjonalnie |
Typ: | Ciąg znaków |
Atrybuty
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
prefiks |
Zawiera prefiks ułatwiający zakwalifikowanie danej przestrzeni nazw. |
Nie dotyczy | Wymagane |
Element <XMLPayload>/<XPath>
Określa ścieżkę XPath do sprawdzenia.<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
Domyślnie: | Nie dotyczy |
Obecność: | Opcjonalnie |
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 funkcja<Expression>/company/employee[@age>=$request.header.age]</Expression>
wyodrębnia szczegóły pracowników, których wiek jest co najmniej równy wartości podanej we właściwości 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ść: | Opcjonalnie |
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: | ciąg znaków |
Obecność: | Opcjonalnie |
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 <Pattern>
zawiera znaki zarezerwowane w formacie XML („, &, ', < lub .), przed jego umieszczeniem musisz zakodować je w formacie XML.
<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 trzeba wyodrębnić z ładunku JSON i ocenić za pomocą 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ść: | Opcjonalnie |
Typ: | Nie dotyczy |
Atrybuty
Atrybut | Opis | Domyślne | Obecność |
---|---|---|---|
escapeSlashCharacter |
Ustaw jako |
prawda | Opcjonalnie |
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ść: | Opcjonalnie |
Typ: | Ciąg znaków |
Element <JSONPayload>/<JSONPath>/<Wzorzec>
Definiuje wzorzec wyrażenia regularnego. Jeśli wyrażenie regularne w elemencie <Pattern>
zawiera znaki zarezerwowane w formacie XML („, &, ', < lub .), przed jego umieszczeniem musisz zakodować je w formacie XML.
<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 |
Informacje o błędach
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 |