Zasada ExpressExpressionProtection

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Co

Wyodrębnia informacje z wiadomości (na przykład Ścieżka URI, parametr zapytania, nagłówek, parametr formularza, zmiennej, XML Payload lub JSON Payload) i ocenia tę treść w porównaniu ze wstępnie zdefiniowanym zwykłym. wyrażeń. Jeśli określone wyrażenia regularne mają wartość prawda, wiadomość jest traktowana jako i zostanie odrzucone.

Filmy

Aby dowiedzieć się więcej o zasadach ochrony wyrażeń regularnych, obejrzyj poniższe filmy.

Wideo Opis
Ochrona przed atakami typu wstrzykiwanie kodu SQL (New Edge) Ochrona przed atakami typu wstrzykiwanie kodu SQL przy użyciu zasady ochrony wyrażeń regularnych w interfejsu nowej wersji Edge.
Ochrona przed atakami typu wstrzykiwanie kodu SQL (Classic Edge) Ochrona przed atakami typu wstrzykiwanie kodu SQL przy użyciu zasady ochrony wyrażeń regularnych w klasycznego interfejsu Edge.

Przykłady

GitHub

Stosuje zabezpieczenia regularne przykład z GitHuba pokazuje, jak przechwytywać potencjalne ataki polegające na wstrzykiwaniu kodu SQL za pomocą parametru zapytania. Ten przykład pokazuje też dobrą praktykę ustawiania ogólnej wartości 400, aby hakerzy nie uzyskali z odpowiedzi 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>&lt;\s*script\b[^&gt;]*&gt;[^&lt;]+&lt;\s*\/\s*script\s*&gt;
          </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żywać zasady RegularExpressionProtection do oceny Ładunki JSON używane w języku JavaScript obejmują ataki. Konkretnie chodzi tu o treści wyodrębnione przez <JSONPath>/<Expression> jest oceniany w oparciu o wyrażenie regularne w formacie <JSONPath>/<Pattern>.

Jeśli wyrażenie regularne w parametrze Kod <JSONPath>/<Pattern> zawiera znaki zarezerwowane dla formatu XML (", &, ', < lub .), musisz go zakodować w formacie XML przed umieszczeniem go w pliku XML zasad . W przykładzie powyżej wyrażenie regularne Poprzednia wartość „<\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*>” to Zakodowany w formacie XML jako &lt;\s*script\b[^&gt;]*&gt;[^&lt;]+&lt;\s*\/\s*script\s*&gt;

Ponadto, jeśli wyrażenie regularne zawiera ukośniki (/), musisz użyć znaku zmiany znaczenia je, ustawiając <JSONPayload> escapeSlashCharacter do wartości true.

Dopasowanie bez rozróżniania wielkości liter

Częstym przypadkiem użycia jest dopasowywanie wielkości liter bez rozróżniania wielkości liter. Oto przykład, możesz to zrobić w wyrażeniu regularnym z użyciem konstrukcji (?i). W tym na przykład DELETE, delete i Delete będą 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órych można używać oceniane na podstawie ruchu API w czasie działania w celu identyfikowania typowych zagrożeń na poziomie treści, które występują pewnych wzorców.

Wyrażenie regularne, w skrócie wyrażenie regularne, to zestaw ciągów znaków. określające wzorzec w ciągu znaków. Wyrażenia regularne umożliwiają automatyzację treści analizowanych pod kątem wzorców. Wyrażeń regularnych możesz użyć na przykład do oceny adresu e-mail. aby mieć pewność, że jest poprawnie zorganizowany. Więcej informacji znajdziesz w sekcji Zwykłe wyrażenia w samouczkach Java.

Najczęstszym zastosowaniem funkcji RegularExpressionProtection jest ocena kodu JSON i XML. pod kątem szkodliwych treści.

Żadne wyrażenie regularne nie może wyeliminować wszystkich ataków opartych na treści, a wiele mechanizmów powinien należy łączyć w celu włączenia obrony w głąb. W tej sekcji opisano kilka zalecanych wzorców wykluczając treści.

Przykładowe wykluczenie wzory

Wyrażenia regularne muszą być zakodowane w formacie XML w pliku konfiguracji zasady.

Nazwa Wyrażenie regularne
Wstrzyknięcie kodu SQL
[\s]*((delete)|(exec)|(drop\s*table)|(insert)|(shutdown)|(update)|(\bor\b))
Wstrzyknięcie kodu Uwzględnij po stronie serwera
<!--#(include|exec|echo|config|printenv)\s+.*

Zakodowany w formacie XML:

&lt;!--#(include|exec|echo|config|printenv)\s+.*
Wstrzyknięcie 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 formacie XML:

&lt;\s*script\b[^&gt;]*&gt;[^&lt;]+&lt;\s*/\s*script\s*&gt;
Wstrzykiwanie wyjątków Javy
.*?Exception in thread.*

Ustaw nagłówek Content-Type w żądaniu z ładunkiem XML lub JSON

Ładunek zasady ochrony wyrażeń regularnych może zawierać te elementy: elementy:

  • Element <XMLPayload>: określa, że należy wyodrębnić informacje ładunek XML i ocenić go w oparciu o podane wyrażenie regularne.

    Jeśli w zasadzie używasz atrybutu <XMLPayload>, Nagłówek Content-Type żądania musi być typem zawartości XML, takim jak application/xml lub text/xml.

  • Element <JSONPayload>: określa, że należy wyodrębnić informacje z ładunku JSON i ocenić za pomocą podanego wyrażenia regularnego.

    Jeśli w zasadzie używasz atrybutu <JSONPayload>, Nagłówek Content-Type żądania musi być typem treści JSON takim jak application/json

Zwykle projektujesz interfejs API w taki sposób, aby akceptował on format XML lub JSON. Istnieje jednak sytuacja, w których interfejs API akceptuje oba te typy. Możesz następnie zdefiniować zasadę ochrony wyrażeń regularnych. z elementami <XMLPayload> i <JSONPayload>. Do konkretnego żądania na podstawie wartości atrybutu Nagłówek Content-Type.

Odwołanie do elementu

Odwołanie do elementu opisuje elementy i atrybuty elementu 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>

&lt;RegularExpressionProtection&gt; atrybuty

<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 name może zawierać litery, cyfry, spacje, łączniki, podkreślenia i kropki. Ta wartość nie może przekracza 255 znaków.

Opcjonalnie możesz użyć elementu <DisplayName> do oznaczenia zasady jako edytor proxy interfejsu zarządzania z inną nazwą w języku naturalnym.

Nie dotyczy Wymagane
continueOnError

Ustaw jako false, aby w przypadku niepowodzenia zasady zwracany był błąd. To normalne w przypadku większości zasad.

Ustaw jako true, aby wykonywanie przepływu było kontynuowane nawet po zastosowaniu zasady niepowodzenie.

fałsz Opcjonalnie
enabled

Aby egzekwować zasadę, ustaw wartość true.

Aby wyłączyć zasadę, ustaw wartość false. Te zasady nie będą jest wymuszane nawet wtedy, gdy jest ono połączone z przepływem.

prawda Opcjonalnie
async

Ten atrybut został wycofany.

fałsz Wycofano

&lt;DisplayName&gt; 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 name zasady otrzyma wartość .

Obecność Opcjonalnie
Typ Ciąg znaków

&lt;Source&gt; element

Wskazuje wiadomość, z której należy wyodrębnić informacje.

Jeśli element <Source> zostanie pominięty, domyślną wartością jest message Na przykład: <Source>message</Source>. Po ustawieniu na message, zasada używa wiadomości z żądaniem jako źródła po dołączeniu do żądania przepływu danych. Podobnie zasada korzysta z odpowiedzi, gdy jest dołączona do procesu odpowiedzi.

Jeśli nie można znaleźć komunikatu źródłowego lub przechodzi on w typie innym niż wiadomość, zasada zwraca błąd.

<Source>response</Source>
Domyślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Ciąg znaków

&lt;IgnoreUnresolvedVariables&gt; element

Określa, czy zasada zwraca błąd po napotkaniu zmiennej, która jest nierozwiązalne.

Jeśli ma wartość false (domyślna), zasada zwraca błąd w przypadku braku rozwiązania . Jeśli ma wartość true, nierozstrzygnięta zmienna jest traktowana jako pusta ciąg znaków (wartość null).

<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Domyślne: fałsz
Obecność: Opcjonalnie
Typ: Wartość logiczna

&lt;URIPath&gt; element

Określa, że informacje muszą zostać wyodrębnione ze ścieżki identyfikatora URI żądania i oceniane z podanymi wyrażeniami regularnymi. Musisz podać co najmniej jeden Element <Pattern> określający wzorzec wyrażenia regularnego do dopasowania.

<URIPath>
  <Pattern>REGEX PATTERN</Pattern>
  <Pattern>REGEX PATTERN</Pattern>
</URIPath>
Domyślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Nie dotyczy

&lt;QueryParam&gt; element

Określa, że informacje muszą zostać wyodrębnione z parametru zapytania żądania i jest oceniana na podstawie podanych wyrażeń regularnych. Musisz podać co najmniej jeden 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ślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Nie dotyczy

Atrybuty

Atrybut Opis Domyślny Obecność
nazwa Nazwa parametru zapytania żądania, z którego należy wyodrębnić informacje na podstawie podanych wyrażeń regularnych. Nie dotyczy Wymagane

&lt;Header&gt; element

określa, że informacje muszą zostać wyodrębnione z nagłówków żądania i odpowiedzi oraz jest oceniana na podstawie podanych wyrażeń regularnych. Musisz podać co najmniej jeden 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ślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Nie dotyczy

Atrybuty

Atrybut Opis Domyślny Obecność
nazwa

Nazwa nagłówka żądania i odpowiedzi, z którego należy wyodrębnić informacje do oceny na podstawie podanych wyrażeń regularnych.

Nie dotyczy Wymagane

&lt;FormParam&gt; element

Określa, że informacje muszą zostać wyodrębnione z parametru formularza żądania i oceniane z podanymi wyrażeniami regularnymi. Musisz podać co najmniej jeden 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ślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Nie dotyczy

Atrybuty

Atrybut Opis Domyślny Obecność
nazwa

Nazwa parametru formularza żądania, z którego należy wyodrębnić informacje na podstawie podanych wyrażeń regularnych.

Nie dotyczy Wymagane

&lt;Variable&gt; element

Określa, że informacje muszą zostać wyodrębnione z danej zmiennej i oceniane w odniesieniu do z podanych wyrażeń regularnych.

<Variable name="request.content">
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</Variable>
Domyślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Nie dotyczy

Atrybuty

Atrybut Opis Domyślny Obecność
nazwa

Nazwa zmiennej, z której należy wyodrębnić informacje na potrzeby oceny z podanymi wyrażeniami regularnymi.

Nie dotyczy Wymagane

&lt;XMLPayload&gt; element

Określa, że informacje muszą zostać wyodrębnione z ładunku XML i oceniane w odniesieniu do wyrażenia regularne.

<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ślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Nie dotyczy

&lt;XMLPayload&gt;/&lt;Namespaces&gt; element

Określa przestrzenie nazw, które mają być używane 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ślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Ciąg znaków

&lt;XMLPayload&gt;/&lt;Namespaces&gt;/&lt;Namespace&gt; element

Określa każdą przestrzeń nazw do używane do oceny XPath.
<Namespaces>
   <Namespace prefix="apigee">http://www.apigee.com</Namespace>
</Namespaces>
Domyślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Ciąg znaków

Atrybuty

Atrybut Opis Domyślny Obecność
prefiks

Zawiera prefiks ułatwiający kwalifikowanie danej przestrzeni nazw.

Nie dotyczy Wymagane

&lt;XMLPayload&gt;/&lt;XPath&gt; element

Określa ścieżkę XPath do oceny.
<XPath>
   <Expression>/apigee:Greeting/apigee:User</Expression>
   <Type>string</Type>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</XPath>
Domyślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Nie dotyczy

&lt;XMLPayload&gt;/&lt;XPath&gt;/&lt;Expression&gt; element

Określa wyrażenie XPath zdefiniowane dla zmiennej. Tylko wyrażenia XPath 1.0 są obsługiwane. Przykład: <Expression>/company/employee[@age>=$request.header.age]</Expression> wyodrębnia informacje o pracownikach, których wiek jest równa wartości określonej w request.header.age
<XPath>
   <Expression>/apigee:Greeting/apigee:User</Expression>
   <Type>string</Type>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</XPath>
Domyślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Ciąg znaków

&lt;XMLPayload&gt;/&lt;XPath&gt;/&lt;Type&gt; element

Określa typ danych.
<XPath>
   <Expression>/apigee:Greeting/apigee:User</Expression>
   <Type>string</Type>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</XPath>
Domyślne: ciąg znaków
Obecność: Opcjonalnie
Typ: Ciąg znaków
Prawidłowe wartości:

Ciąg tekstowy. Prawidłowe wartości to string, boolean, int, long, float, double i nodeset

&lt;XMLPayload&gt;/&lt;XPath&gt;/&lt;Pattern&gt; element

Definiuje wzorzec wyrażenia regularnego. Jeśli wyrażenie regularne w argumencie element<Pattern> zawiera znaki zarezerwowane przez XML (", &, ', < lub ), musisz go zakodować w formacie XML przed dołączeniem.

<XPath>
   <Expression>/apigee:Greeting/apigee:User</Expression>
   <Type>string</Type>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</XPath>
Domyślne: Nie dotyczy
Obecność: Wymagane
Typ: Ciąg znaków

&lt;JSONPayload&gt; element

Określa, że informacje muszą zostać wyodrębnione z ładunku JSON i oceniane w odniesieniu do wyrażenia regularne.

<JSONPayload>
   <JSONPath>
      <Expression>$.store.book[*].author</Expression>
      <Pattern>REGEX PATTERN</Pattern>
      <Pattern>REGEX PATTERN</Pattern>
   </JSONPath>
</JSONPayload>
Domyślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Nie dotyczy

Atrybuty

Atrybut Opis Domyślny Obecność
escapeSlashCharacter

Ustaw jako true, aby poprzedzać ukośniki (/) w standardzie zwykłym wyrażenia w <JSONPath>/<Pattern>.

prawda Opcjonalnie

&lt;JSONPayload&gt;/&lt;JSONPath&gt;/&lt;Expression&gt; element

Określa wyrażenie JSONPath zdefiniowane dla zmiennej.

<JSONPath>
   <Expression>$.store.book[*].author</Expression>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</JSONPath>
Domyślne: Nie dotyczy
Obecność: Opcjonalnie
Typ: Ciąg znaków

&lt;JSONPayload&gt;/&lt;JSONPath&gt;/&lt;Pattern&gt; element

Definiuje wzorzec wyrażenia regularnego. Jeśli wyrażenie regularne w parametrze Element <Pattern> zawiera znaki zarezerwowane w formacie XML (", &, ', < lub .), musisz go zakodować w formacie XML, zanim go umieścisz.

<JSONPath>
   <Expression>$.store.book[*].author</Expression>
   <Pattern>REGEX PATTERN</Pattern>
   <Pattern>REGEX PATTERN</Pattern>
</JSONPath>
Domyślne: Nie dotyczy
Obecność: Wymagane
Typ: Ciąg znaków

Informacje o błędzie

This section describes the error codes and messages returned and fault variables set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. If you want to capture an error and raise your own custom error, set the continueOnError="true" attribute on the policy root element. To learn more, see What you need to know about policy errors and Handling faults.

Errors returned from Edge policies follow a consistent format as described in the Error code reference.

Runtime errors

These errors can occur when the policy executes.

Error Code Message
ExecutionFailed Failed to execute the RegularExpressionProtection StepDefinition {0}. Reason: {1}
InstantiationFailed Failed to instantiate the RegularExpressionProtection StepDefinition {0}
NonMessageVariable Variable {0} does not resolve to a Message
SourceMessageNotAvailable {0} message is not available for RegularExpressionProtection StepDefinition {1}
ThreatDetected Regular Expression Threat Detected in {0}: regex: {1} input: {2}
VariableResolutionFailed Failed to resolve variable {0}

Deployment errors

Error Code Message Fix
CannotBeConvertedToNodeset RegularExpressionProtection {0}: Result of xpath {1} cannot be converted to nodeset. Context {2}
DuplicatePrefix RegularExpressionProtection {0}: Duplicate prefix {1}
EmptyJSONPathExpression RegularExpressionProtection {0}: Empty JSONPath expression
EmptyXPathExpression RegularExpressionProtection {0}: Empty XPath expression
InvalidRegularExpression RegularExpressionProtection {0}: Invalid Regular Expression {1}, Context {2}
JSONPathCompilationFailed RegularExpressionProtection {0}: Failed to compile jsonpath {1}. Context {2}
NONEmptyPrefixMappedToEmptyURI RegularExpressionProtection {0}: Non-empty prefix {1} cannot be mapped to empty uri
NoPatternsToEnforce RegularExpressionProtection {0}: No patterns to enforce in {1}
NothingToEnforce RegularExpressionProtection {0}: at least one of URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload is mandatory
XPathCompilationFailed RegularExpressionProtection {0}: Failed to compile xpath {1}. Context {2}

Fault variables

These variables are set when this policy triggers an error. For more information, see What you need to know about policy errors.

Variables Where Example
fault.name="fault_name" fault_name is the name of the fault, as listed in the table above. fault.name Matches "ThreatDetected"
regularexpressionprotection.policy_name.failed policy_name is the user-specified name of the policy that threw the fault. regularexpressionprotection.Regular-Expressions-Protection-1.failed = true

Schematy

Powiązane artykuły

Zagrożenie w JSON Zasady ochrony

Zagrożenie w formacie XML Zasady ochrony