Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Ne?
Bir iletiden bilgi çıkarır (örneğin, URI Yolu, Sorgu Parametresi, Üstbilgi, Form Parametresi, Değişken, XML Yükü veya JSON Yükü) oluşturur ve bu içeriği önceden tanımlanmış normal ifade eder. Belirtilen herhangi bir normal ifade doğru olarak değerlendirilirse ileti kabul edilir ve reddedilir.
Videolar
Normal İfade Koruması politikası hakkında daha fazla bilgi edinmek için aşağıdaki videoları izleyin.
Video | Açıklama |
---|---|
Koruma SQL yerleştirme saldırılarına karşı (Yeni Uç) | Normal İfade Koruması politikasını kullanarak SQL yerleştirme saldırılarına karşı koruma sağlayın: yeni deneyim arayüzü hakkında daha fazla bilgi edinin. |
Koruma SQL yerleştirme saldırılarına karşı (Klasik Edge) | Normal İfade Koruması politikasını kullanarak SQL yerleştirme saldırılarına karşı koruma sağlayın: klasik Edge kullanıcı arayüzünü açın. |
Örnekler
GitHub
Normal ifade koruması sample on GitHub, bir web sunucusu üzerinden yapılan olası SQL yerleştirme saldırılarının nasıl sorgu parametresidir. Ayrıca örnek, genel bir 400 hata durumunu kontrol etmenizi sağlar.
JavaScript saldırıya karşı koruma içerir
<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>
Yukarıdaki örnek,
JavaScript'in JSON yükleri, saldırıları içerir. Daha ayrıntılı olarak belirtmek gerekirse,
<JSONPath>
/<Expression>
<JSONPath>
/<Pattern>
içinde normal ifade.
Normal ifade
<JSONPath>
/<Pattern>
XML ile ayrılmış karakterler içeriyor
(", &, ', < veya .) içeriyorsa politika XML'sine eklemeden önce XML olarak kodlamanız gerekir.
yapılandırma dosyası. Örneğin, yukarıdaki örnekte, normal ifade
<\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*>
adlı kullanıcı
XML olarak kodlanmış:
<\s*script\b[^>]*>[^<]+<\s*\/\s*script\s*>
.
Ayrıca, normal ifadenizde düz eğik çizgi (/) varsa
<JSONPayload>
escapeSlashCharacter
ayarlayarak bunları
özelliğini true
olarak değiştirin.
Büyük/küçük harfe duyarlı olmayan eşleme
Büyük/küçük harfe duyarlı olmayan eşleştirme yapmak için yaygın bir kullanım alanıdır. Bu örnekte dosyalarınızı
bunu (?i)
yapısını kullanarak normal ifadede yapabilirsiniz. Burada
örneğin DELETE
, delete
ve Delete
doğru olarak değerlendirebilirsiniz.
<Pattern>[\s]*(?i)((delete)|(exec)|(drop\s*table)|(insert)|(shutdown)|(update)|(\bor\b))</Pattern>
Normal İfade Koruması politikası hakkında
Apigee Edge, kullanabileceğiniz normal ifadeleri aşağıdaki içerik düzeyindeki yaygın tehditleri tespit etmek için çalışma zamanında API trafiğiyle karşılaştırılarak değerlendirilmiştir. bazı kalıplar var.
Normal ifade veya kısaca regex, bir dizi dizedir dize içinde bir kalıp belirten tüm anahtar kelimeleri listeler. Normal ifadeler, içeriğin programatik olarak yardımcı olur. Normal ifadeler, örneğin bir e-posta adresini değerlendirmek için kullanılabilir düzgün yapılandırıldığından emin olun. Daha fazla bilgi için Normal Java Eğiticilerindeki ifadeler.
regexionProtection'ın en yaygın kullanımı, JSON ve XML değerlerinin değerlendirilmesidir. açıklığa kavuşturulmasıdır.
Hiçbir normal ifade tüm içeriğe dayalı saldırıları ortadan kaldıramaz ve birden fazla mekanizma, sağlamak için birleştiriyor. Bu bölümde, projeniz için önerilen bazı kalıplar hariç tutmalısınız.
Hariç tutma örneği desenler
Normal ifadeler, politikanın XML yapılandırma dosyasında XML olarak kodlanmış olmalıdır.
Ad | Normal İfade |
---|---|
SQL Yerleştirme |
[\s]*((delete)|(exec)|(drop\s*table)|(insert)|(shutdown)|(update)|(\bor\b)) |
Sunucu Tarafı Dahil Etme Ekleme |
<!--#(include|exec|echo|config|printenv)\s+.* XML olarak kodlanmış: <!--#(include|exec|echo|config|printenv)\s+.* |
XPath Kısaltılmış Söz Dizimi Yerleştirme |
(/(@?[\w_?\w:\*]+(\[[^]]+\])*)?)+ |
XPath Genişletilmiş Söz Dizimi Yerleştirme |
/?(ancestor(-or-self)?|descendant(-or-self)?|following(-sibling)) |
JavaScript Yerleştirme |
<\s*script\b[^>]*>[^<]+<\s*/\s*script\s*> XML olarak kodlanmış: <\s*script\b[^>]*>[^<]+<\s*/\s*script\s*> |
Java İstisna Yerleştirme |
.*?Exception in thread.* |
XML veya JSON yüküne sahip bir istekteki Content-Type üstbilgisini ayarlama
Normal İfade Koruması politikası yükü şunları içerebilir: öğeler:
-
<XMLPayload>
öğesi: Bilgilerin şuradan çıkarılması gerektiğini belirtir: ve sağlanan normal ifadeyle değerlendirilir.Politikada
<XMLPayload>
kullanırsanız İsteğinContent-Type
başlığı, şunun gibi bir XML içerik türü olmalıdır:application/xml
veyatext/xml
. -
<JSONPayload>
öğesi: Bilgilerin çıkarılması gerektiğini belirtir oluşturulur ve sağlanan normal ifadeye göre değerlendirilir.Politikada
<JSONPayload>
kullanırsanız İsteğinContent-Type
başlığı, şunun gibi bir JSON içerik türü olmalıdır:application/json
.
Genellikle API'yi XML veya JSON'u kabul edecek şekilde tasarlarsınız. Ancak bir senaryoda
Burada API her ikisini de kabul eder. Ardından bir Normal İfade Koruması politikası tanımlayabilirsiniz.
hem <XMLPayload>
hem de <JSONPayload>
öğelerini kullanır.
Content-Type
üstbilgisi.
Öğe referansı
Öğe referansı, regexionProtection öğelerini ve özelliklerini açıklar. politikası.
<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>
<RegularExpressionProtection> özellikler
<RegularExpressionProtection async="false" continueOnError="false" enabled="true" name="Regular-Expression-Protection-1">
Aşağıdaki tabloda tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
name |
Politikanın dahili adı. İsteğe bağlı olarak, politikayı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğe
Politikayı name
özelliğine ek olarak
farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.
<DisplayName>Policy Display Name</DisplayName>
Varsayılan |
Yok Bu öğeyi çıkarırsanız politikanın |
---|---|
Varlık | İsteğe bağlı |
Tür | Dize |
<Source> öğe
Bilgilerin çıkarılması gereken mesajı belirtir.
<Source>
öğesi atlanırsa değer varsayılan olarak
message
. Örneğin, <Source>message</Source>
. Şuna ayarlandığında
message
, politika bir isteğe eklendiğinde kaynak olarak istek mesajını kullanır
akışı sağlar. Benzer şekilde politika, yanıt akışına eklendiğinde yanıt mesajını kullanır.
Kaynak mesaj çözümlenemezse veya mesaj olmayan bir türe dönüşürse politika hata döndürür.
<Source>response</Source>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Dize |
<IgnoreUnresolvedVariables> öğe
Politikanın çözülemez.
false
(varsayılan) değerine ayarlanırsa politika, çözülemeyen bir
değişkeniyle karşılaşıldı. true
olarak ayarlanırsa çözümlenmemiş değişken boş olarak değerlendirilir
dize (boş).
<IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables>
Varsayılan: | false |
Bulunma: | İsteğe bağlı |
Tür: | Boole |
<URIPath> öğe
Bilgilerin istek URI yolundan çıkarılması ve değerlendirilmesi gerektiğini belirtir
karşılaştırılması gerekir. En az bir tane sağlamalısınız
Eşleşecek bir normal ifade kalıbı belirten <Pattern>
öğesi.
<URIPath> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </URIPath>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Yok |
<QueryParam> öğe
İstek sorgu parametresinden bilginin çıkarılması gerektiğini ve
değerlendirilen normal ifadelerdir. En az bir tane sağlamalısınız
Eşleşecek bir normal ifade kalıbı belirten <Pattern>
öğesi.
<QueryParam name="a-query-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </QueryParam>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Yok |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ad | için bilgi ayıklanması gereken istek sorgu parametresinin adı normal ifadelerle karşılaştırarak değerlendirmelisiniz. | Yok | Zorunlu |
<Header> öğe
İstek ve yanıt başlıklarından ve
değerlendirilen normal ifadelerdir. En az bir tane sağlamalısınız
Eşleşecek bir normal ifade kalıbı belirten <Pattern>
öğesi.
<Header name="a-header"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Header>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Yok |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ad |
Bilgilerin çıkarılması gereken istek ve yanıt başlığının adı kullanılan normal ifadelere göre derecelendirilir. |
Yok | Zorunlu |
<FormParam> öğe
Bilgilerin istek formu parametresinden çıkarılması ve değerlendirilmesi gerektiğini belirtir
karşılaştırılması gerekir. En az bir tane sağlamalısınız
Eşleşecek bir normal ifade kalıbı belirten <Pattern>
öğesi.
<FormParam name="a-form-param"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </FormParam>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Yok |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ad |
için bilgi ayıklanması gereken istek formu parametresinin adı normal ifadelerle karşılaştırarak değerlendirmelisiniz. |
Yok | Zorunlu |
<Variable> öğe
Bilgilerin belirtilen değişkenden çıkarılması ve bu değişkene göre değerlendirilmesi gerektiğini belirtir verilen normal ifadelerdir.
<Variable name="request.content"> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </Variable>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Yok |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ad |
Değerlendirme için bilginin ayıklanması gereken değişkenin adı karşılaştırılması gerekir. |
Yok | Zorunlu |
<XMLPayload> öğe
Bilgilerin bir XML yükünden çıkarılması ve normal ifadelerin olduğu anlamına gelir.
<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>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Yok |
<XMLPayload>/<Namespaces> öğe
XPath değerlendirmesinde kullanılacak ad alanlarını belirtir.
<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>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Dize |
<XMLPayload>/<Namespaces>/<Namespace> öğe
Her ad alanını veya XPath değerlendirmesinde kullanılır.<Namespaces> <Namespace prefix="apigee">http://www.apigee.com</Namespace> </Namespaces>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Dize |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
önek |
Belirli bir ad alanının nitelenmesine yardımcı olmak için bir ön ek sağlar. |
Yok | Zorunlu |
<XMLPayload>/<XPath> öğe
XPath'i belirtir olması gerekir.<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Yok |
<XMLPayload>/<XPath>/<Expression> öğe
Değişken için tanımlanan XPath ifadesini belirtir. Yalnızca XPath 1.0 ifadeleri desteklenir. Örneğin,<Expression>/company/employee[@age>=$request.header.age]</Expression>
.
yaşı
request.header.age
.<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Dize |
<XMLPayload>/<XPath>/<Type> öğe
Veri türünü belirtir.<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
Varsayılan: | dize |
Bulunma: | İsteğe bağlı |
Tür: | Dize |
Geçerli değerler: |
Dize. Geçerli değerler şunlardır: |
<XMLPayload>/<XPath>/<Pattern> öğe
Normal ifade modelini tanımlar. Bir normal ifade
<Pattern>
öğeniz XML'de ayrılmış karakterler içeriyor (", &, ', < veya
.) eklemeden önce XML olarak kodlamanız gerekir.
<XPath> <Expression>/apigee:Greeting/apigee:User</Expression> <Type>string</Type> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </XPath>
Varsayılan: | Yok |
Bulunma: | Zorunlu |
Tür: | Dize |
<JSONPayload> öğe
Bilgilerin bir JSON yükünden çıkarılması ve normal ifadelerin olduğu anlamına gelir.
<JSONPayload> <JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath> </JSONPayload>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Yok |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
escapeSlashCharacter |
Normal satırdaki eğik çizgi (/) karakterlerinden kurtulmak için |
true | İsteğe bağlı |
<JSONPayload>/<JSONPath>/<Expression> öğe
Değişken için tanımlanan JSONPath ifadesini belirtir.
<JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Dize |
<JSONPayload>/<JSONPath>/<Pattern> öğe
Normal ifade modelini tanımlar.
<Pattern>
öğesi XML ile ayrılmış karakterler içeriyor (", &, ', < veya .),
eklemeden önce XML olarak kodlamanız gerekir.
<JSONPath> <Expression>$.store.book[*].author</Expression> <Pattern>REGEX PATTERN</Pattern> <Pattern>REGEX PATTERN</Pattern> </JSONPath>
Varsayılan: | Yok |
Bulunma: | Zorunlu |
Tür: | Dize |
Hata referansı
Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları,
döndürülen mesajlar ve hata değişkenleri açıklanmaktadır. Hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmek önemlidir. Bir hatayı yakalamak ve kendi özel hatanızı oluşturmak istiyorsanız politika kök öğesinde continueOnError="true"
özelliğini ayarlayın.
Daha fazla bilgi için
Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.
Edge politikalarından döndürülen hatalar, Hata kodu referansı bölümünde açıklanan tutarlı bir biçimde olur.
Çalışma zamanı hataları
Politika yürütüldüğünde bu hatalar ortaya çıkabilir.
Hata Kodu | Message |
---|---|
ExecutionFailed | NormalExpressionProtection Adım Tanımı {0} yürütülemedi. Neden: {1} |
InstantiationFailed | regularExpressionProtection StepDefinition {0} örneklendirmesi başarısız oldu |
NonMessageVariable | {0} değişkeni bir Mesaj oluşturmuyor |
SourceMessageNotAvailable | {0} iletisi, RegularExpressionProtection StepDefinition için kullanılamıyor {1} |
ThreatDetected | {0} içinde Normal İfade Tehdidi Algılandı: normal ifade: {1} giriş: {2} |
VariableResolutionFailed | {0} değişkeni çözümlenemedi |
Dağıtım hataları
Hata Kodu | Message | Düzelt |
---|---|---|
CannotBeConvertedToNodeset | RegularExpressionProtection {0}: xpath {1} işleminin sonucu düğüm kümesine dönüştürülemez. Bağlam {2} | build |
DuplicatePrefix | RegularExpressionProtection {0}: Yinelenen ön ek {1} | build |
EmptyJSONPathExpression | NormalExpressionProtection {0}: Boş JSONPath ifadesi | build |
EmptyXPathExpression | NormalExpressionProtection {0}: Boş XPath ifadesi | build |
InvalidRegularExpression | RegularExpressionProtection {0}: Geçersiz Normal İfade {1}, Bağlam {2} | build |
JSONPathCompilationFailed | NormalExpressionProtection {0}: jsonpath {1} derlenemedi. Bağlam {2} | build |
NONBlankPrefixMappedToBlankURI | NormalExpressionProtection {0}: Boş olmayan ön ek {1}, boş uri ile eşlenemez | build |
NoPatternsToEnforce | NormalExpressionProtection {0}: {1} içinde zorunlu kılınacak kalıp yoktur | build |
NothingToEnforce | RegularExpressionProtection {0}: URIPath, QueryParam, Header, FormParam, XMLPayload, JSONPayload'un en az biri zorunludur | build |
XPathCompilationFailed | NormalExpressionProtection {0}: xpath {1} derlenemedi. Bağlam {2} | build |
Hata değişkenleri
Bu değişkenler, bu politika bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki tabloda listelenen hatanın adıdır. | fault.name Matches "ThreatDetected" |
regularexpressionprotection.policy_name.failed |
policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. | regularexpressionprotection.Regular-Expressions-Protection-1.failed = true |