Apigee Edge belgelerini görüntülüyorsunuz.
.
Git:
Apigee X belgeleri. bilgi
Ne?
XML güvenlik açıklarıyla ilgilenin ve API'nize yapılan saldırıları en aza indirin. İsteğe bağlı olarak, XML yükünü tespit edin belirlenen sınırlara göre yapılan saldırıları ifade eder. Aşağıdakileri kullanarak XML tehditlerine karşı filtreleyin yaklaşımları:
- Mesajları XML şemasına göre doğrulayın (
.xsd
) - Hariç tutulacak belirli anahtar kelimeler veya kalıplar için mesaj içeriğini değerlendirme
- Bozuk veya hatalı biçimlendirilmiş iletileri ayrıştırılmadan önce tespit etme
Öğe referansı
Öğe referansı, XMLThreatProtection öğelerini ve özelliklerini açıklar. politikası.
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-Protection-1"> <DisplayName>XML Threat Protection 1</DisplayName> <NameLimits> <Element>10</Element> <Attribute>10</Attribute> <NamespacePrefix>10</NamespacePrefix> <ProcessingInstructionTarget>10</ProcessingInstructionTarget> </NameLimits> <Source>request</Source> <StructureLimits> <NodeDepth>5</NodeDepth> <AttributeCountPerElement>2</AttributeCountPerElement> <NamespaceCountPerElement>3</NamespaceCountPerElement> <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount> </StructureLimits> <ValueLimits> <Text>15</Text> <Attribute>10</Attribute> <NamespaceURI>10</NamespaceURI> <Comment>10</Comment> <ProcessingInstructionData>10</ProcessingInstructionData> </ValueLimits> </XMLThreatProtection>
<XMLThreatProtection> özellikler
<XMLThreatProtection async="false" continueOnError="false" enabled="true" name="XML-Threat-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 |
<NameLimits> öğe
Politika tarafından kontrol edilecek ve uygulanacak karakter sınırlarını belirtir.
<NameLimits> <Element>10</Element> <Attribute>10</Attribute> <NamespacePrefix>10</NamespacePrefix> <ProcessingInstructionTarget>10</ProcessingInstructionTarget> </NameLimits>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Yok |
<NameLimits>/<Element> öğe
XML'deki herhangi bir öğe adında izin verilen maksimum karakter sayısı sınırını belirtir uygulayacaksınız.
Örneğin, aşağıdaki XML'i ele alalım:
<book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> </book>
Yukarıdaki XML analiz edilirken, politikadaki <Element>
öğe değeri
aşağıdaki snippet, öğe adlarının (book
, title
,
author
ve year)
10
karakteri aşmaz.
<NameLimits> <Element>10</Element> <Attribute>10</Attribute> <NamespacePrefix>10</NamespacePrefix> <ProcessingInstructionTarget>10</ProcessingInstructionTarget> </NameLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: | Tamsayı |
<NameLimits>/<Attribute> öğe
XML dokümanı.
Örneğin, aşağıdaki XML'i ele alalım:
<book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> </book>
Yukarıdaki XML analiz edilirken, politikadaki <Attribute>
öğe değeri
aşağıdaki snippet, category
özellik adının
10
karakter.
<NameLimits> <Element>10</Element> <Attribute>10</Attribute> <NamespacePrefix>10</NamespacePrefix> <ProcessingInstructionTarget>10</ProcessingInstructionTarget> </NameLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: | Tamsayı |
<NameLimits>/<NamespacePrefix> öğe
XML dokümanı.
Örneğin, aşağıdaki XML'i ele alalım:
<ns1:myelem xmlns:ns1="http://ns1.com"/>
Yukarıdaki XML analiz edilirken, <NamespacePrefix>
aşağıdaki politika snippet'i, ns1
ad alanı önekinin
10
karakter.
<NameLimits> <Element>10</Element> <Attribute>10</Attribute> <NamespacePrefix>10</NamespacePrefix> <ProcessingInstructionTarget>10</ProcessingInstructionTarget> </NameLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: | Tamsayı |
<NameLimits>/<ProcessingInstructionTarget> öğe
Herhangi bir işleme talimatlarına bakın.
Örneğin, aşağıdaki XML'i ele alalım:
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
Yukarıdaki XML analiz edilirken <ProcessingInstructionTarget>
öğesi
aşağıdaki politika snippet'indeki değer, işleme talimatı hedefinin olduğunu doğrular
xml-stylesheet
10
karakteri aşmıyor.
<NameLimits> <Element>10</Element> <Attribute>10</Attribute> <NamespacePrefix>10</NamespacePrefix> <ProcessingInstructionTarget>10</ProcessingInstructionTarget> </NameLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: | Tamsayı |
<Source> öğe
XML yükü saldırılarına karşı denetlenmesi gereken mesaj. Bu ayar genellikle şu şekilde ayarlanır:
request
.
Bu öğe, message
olarak ayarlandığında istek mesajını otomatik olarak değerlendirir
istek akışına eklendiğinde ve yanıta eklendiğinde yanıt mesajına eklendiğinde
akışı sağlar.
<Source>request</Source>
Varsayılan: | istek |
Bulunma: | İsteğe bağlı |
Tür: |
Dize.
|
<StructuralLimits> öğe
Politika tarafından kontrol edilecek ve uygulanacak yapısal sınırları belirtir.
<StructureLimits> <NodeDepth>5</NodeDepth> <AttributeCountPerElement>2</AttributeCountPerElement> <NamespaceCountPerElement>3</NamespaceCountPerElement> <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount> </StructureLimits>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Yok |
<StructuralLimits>/<NodeDepth> öğe
XML'de izin verilen maksimum düğüm derinliğini belirtir.
<StructureLimits> <NodeDepth>5</NodeDepth> <AttributeCountPerElement>2</AttributeCountPerElement> <NamespaceCountPerElement>3</NamespaceCountPerElement> <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount> </StructureLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
<StructuralLimits>/<AttributeCountPerElement> öğe
Herhangi bir öğe için izin verilen maksimum özellik sayısını belirtir.
Örneğin, aşağıdaki XML'i ele alalım:
<book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> </book>Yukarıdaki XML analiz edilirken,
<AttributeCountPerElement>
öğe değeri
aşağıdaki politika snippet'inde book
, title
,
author
ve year
en fazla 2
özelliğe sahip.
Ad alanlarını tanımlamak için kullanılan özelliklerin sayılmaz.
<StructureLimits> <NodeDepth>5</NodeDepth> <AttributeCountPerElement>2</AttributeCountPerElement> <NamespaceCountPerElement>3</NamespaceCountPerElement> <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount> </StructureLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
<StructuralLimits>/<NameSpaceCountPerElement> öğe
Herhangi bir öğe için izin verilen maksimum ad alanı tanımı sayısını belirtir.
Örneğin, aşağıdaki XML'i ele alalım:
<e1 attr1="val1" attr2="val2"> <e2 xmlns="http://apigee.com" xmlns:yahoo="http://yahoo.com" one="1" yahoo:two="2"/> </e1>
Yukarıdaki XML analiz edilirken, <NamespaceCountPerElement>
öğesinin değeri
aşağıdaki politika snippet'inde, e1
ve e2
öğelerinin olduğunu doğrular.
her birinde en fazla 2
ad alanı tanımı olmalıdır. Bu durumda, <e1> ek ad alanı tanımına ve
<e2> 2 ad alanına sahip
tanımlar: xmlns="http://apigee.com"
ve
xmlns:yahoo="http://yahoo.com"
.
<StructureLimits> <NodeDepth>5</NodeDepth> <AttributeCountPerElement>2</AttributeCountPerElement> <NamespaceCountPerElement>3</NamespaceCountPerElement> <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount> </StructureLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
<StructuralLimits>/<ChildCount> öğe
Herhangi bir öğe için izin verilen maksimum alt öğe sayısını belirtir.
<StructureLimits> <NodeDepth>5</NodeDepth> <AttributeCountPerElement>2</AttributeCountPerElement> <NamespaceCountPerElement>3</NamespaceCountPerElement> <ChildCount includeComment="true" includeElement="true" includeProcessingInstruction="true" includeText="true">3</ChildCount> </StructureLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
Özellikler
Özellik | Varsayılan | Varlık |
---|---|---|
includeComment | true | İsteğe bağlı |
includeElement | true | İsteğe bağlı |
includeProcessingInstructions | true | İsteğe bağlı |
includeText | true | İsteğe bağlı |
<ValueLimits> öğe
Politika tarafından kontrol edilecek ve zorunlu kılınacak değerler için karakter sınırlarını belirtir.
<ValueLimits> <Text>15</Text> <Attribute>10</Attribute> <NamespaceURI>10</NamespaceURI> <Comment>10</Comment> <ProcessingInstructionData>10</ProcessingInstructionData> </ValueLimits>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: |
Yok |
<ValueLimits>/<Text> öğe
XML dokümanında bulunan tüm metin düğümleri için bir karakter sınırını belirtir.
Örneğin, aşağıdaki XML'i ele alalım:
<book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> </book>Yukarıdaki XML analiz edilirken, politikadaki
<Text>
öğe değeri
aşağıdaki snippet, Learning XML
, Erik T.
Ray,
ve 2003
öğe metin değerlerinin her birinin 15
karakteri aşmadığını doğrular.
<ValueLimits> <Text>15</Text> <Attribute>10</Attribute> <NamespaceURI>10</NamespaceURI> <Comment>10</Comment> <ProcessingInstructionData>10</ProcessingInstructionData> </ValueLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
<ValueLimits>/<Attribute> öğe
XML dokümanındaki özellik değerleri için bir karakter sınırlamasını belirtir.
Örneğin, aşağıdaki XML'i ele alalım:
<book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> </book>Yukarıdaki XML analiz edilirken, politikadaki
<Attribute>
öğe değeri
aşağıdaki snippet, WEB
özellik değerinin
10
karakter.
<ValueLimits> <Text>15</Text> <Attribute>10</Attribute> <NamespaceURI>10</NamespaceURI> <Comment>10</Comment> <ProcessingInstructionData>10</ProcessingInstructionData> </ValueLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
<ValueLimits>/<NamespaceURI> öğe
XML belgesinde bulunan ad alanı URI'leri için bir karakter sınırını belirtir.
Örneğin, aşağıdaki XML'i ele alalım:
<ns1:myelem xmlns:ns1="http://ns1.com"/>Yukarıdaki XML analizini yaparken,
<NamespaceURI>
öğesinin
aşağıdaki politika snippet'i, http://ns1.com
ad alanı URI değerinin mevcut olduğunu doğrular
10
karakteri aşmamalıdır.
<ValueLimits> <Text>15</Text> <Attribute>10</Attribute> <NamespaceURI>10</NamespaceURI> <Comment>10</Comment> <ProcessingInstructionData>10</ProcessingInstructionData> </ValueLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
<ValueLimits>/<Comment> öğe
XML dokümanında bulunan yorumlar için karakter sınırını belirtir.
Örneğin, aşağıdaki XML'i ele alalım:
<book category="WEB"> <!-- This is a comment --> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> </book>Yukarıdaki XML analiz edilirken, politikadaki
<Comment>
öğe değeri
aşağıdaki snippet, This is a comment
yorum metninin
10
karakter.
<ValueLimits> <Text>15</Text> <Attribute>10</Attribute> <NamespaceURI>10</NamespaceURI> <Comment>10</Comment> <ProcessingInstructionData>10</ProcessingInstructionData> </ValueLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
<ValueLimits>/<ProcessingInstructionData> öğe
XML'de bulunan tüm işleme talimatı metinleri için bir karakter sınırını belirtir uygulayacaksınız.
Örneğin, aşağıdaki XML'i ele alalım:
<?xml-stylesheet type="text/xsl" href="style.xsl"?>Yukarıdaki XML analizinde
<ProcessingInstructionData>
öğesi
aşağıdaki politika snippet'indeki değer, işleme talimatı metninin
type="text/xsl" href="style.xsl"
, 10
karakteri aşmıyor.
<ValueLimits> <Text>15</Text> <Attribute>10</Attribute> <NamespaceURI>10</NamespaceURI> <Comment>10</Comment> <ProcessingInstructionData>10</ProcessingInstructionData> </ValueLimits>
Varsayılan: | Bir sınır belirtmezseniz sistem varsayılan olarak -1 değerini uygular.
sistemde limit yoktur. |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
Hata referansı
Bu bölümde, bu politika bir hatayı tetiklediğinde döndürülen hata kodları ve hata mesajlarının yanı sıra Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi için Bilmeniz gerekenler Politika hataları ve Kullanım sorun.
Çalışma zamanı hataları
Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden | Düzelt |
---|---|---|---|
steps.xmlthreatprotection.ExecutionFailed |
500 | XMLThreatProtection politikası birçok farklı türde ExecutionFailed hatası verebilir. Bu hataların çoğu, politikada belirlenen belirli bir eşik aşıldığında ortaya çıkar. Bu Hata türleri şunlardır: öğe adı uzunluğu alt öğe sayısı, düğüm derinliği, özellik sayısı, özellik adı uzunluğu, ve çok daha fazlası. Tam listeyi XMLThreatProtection politikası çalışma zamanı hatası sorunlarını giderme konusunda bulabilirsiniz. | build |
steps.xmlthreatprotection.InvalidXMLPayload |
500 |
Bu hata, XMLThreatProtection politikasının <Source> öğesi tarafından belirtilen giriş mesajı yükü geçerli bir XML dokümanı değilse ortaya çıkar.
|
build |
steps.xmlthreatprotection.SourceUnavailable |
500 |
Bu hata, ileti
<Source> öğesinde belirtilen değişken aşağıdakilerden biri olabilir:
|
build |
steps.xmlthreatprotection.NonMessageVariable |
500 |
Bu hata, <Source> öğesi farklı bir değişkene ayarlanırsa
şu türde değil:
mesaj yazın.
|
build |
Notlar:
- Hata adı ExecutionFailed, varsayılan hata adıdır ve tespit edilen hatanın türü; ancak bu varsayılan değer kuruluş düzeyinde bir mülktür. Bu özellik ayarlandığında hata adı, orijinal hatası. Örneğin, "TextExceeded" veya "AttrValueExceeded" değerini alır. Aşağıdakiler için Kullanım Notları'na bakın: bolca fırsat sunuyor.
- 500 HTTP durumu varsayılandır; ancak HTTP Durumu, tüm URL'ler için akış hatalarını almak için bir istek oluşturun. Aşağıdakiler için Kullanım Notları'na bakın: bolca fırsat sunuyor.
Dağıtım hataları
Yok.
Hata değişkenleri
Bu değişkenler, çalışma zamanı hatası oluştuğunda ayarlanır. Daha fazla bilgi için Bilmeniz gerekenler hakkında daha fazla bilgi edinin.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi hatanın adıdır. Hata adı, hata kodunun son kısmıdır. | fault.name Matches "SourceUnavailable" |
xmlattack.policy_name.failed |
policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. | xmlattack.XPT-SecureRequest.failed = true |
Örnek hata yanıtı
{ "fault": { "faultstring": "XMLThreatProtection[XPT-SecureRequest]: Execution failed. reason: XMLThreatProtection[XTP-SecureRequest]: Exceeded object entry name length at line 2", "detail": { "errorcode": "steps.xmlthreatprotection.ExecutionFailed" } } }
Örnek hata kuralı
<FaultRule name="XML Threat Protection Policy Faults"> <Step> <Name>AM-CustomErrorResponse</Name> <Condition>(fault.name Matches "ExecutionFailed") </Condition> </Step> <Condition>(xmlattack.XPT-SecureRequest.failed = true) </Condition> </FaultRule>
Şemalar
Kullanım notları
Çevrimiçi verileri alan tüm sunucular, kötü amaçlı veya kasıtsız bir saldırıya tabidir. Bazı saldırılar, tehlikeye atabilecek riskleri de beraberinde getiriyor. Bozuk veya çok karmaşık XML belgeleri sunucuların kullanılabilir olandan daha fazla bellek tahsis etmesine neden olur. Bu da CPU ve bellek kaynaklarını ayrıştırıcıların kilitlenmesini ve genellikle devre dışı bırakılmasını sağlayan mesaj işleme, uygulama düzeyinde oluşturma hizmet reddi saldırılarından oluşur.
Tehdit koruması hatası yapılandırması
Bu politika için FaultRules ile ilgili önemli bilgiler:
Edge, varsayılan olarak bir HTTP 500 Dahili Sunucu Hatası durum kodu ve bir ExecutionFailed hatası verir.
bu kod, JSON veya XML Tehdit Koruması politikasının ötesine geçemezse bu kodla işlem yapar. Şunları değiştirebilirsiniz:
bu hata davranışını kuruluş düzeyindeki yeni bir özellikle değiştirebilirsiniz. Kuruluş ayarlarken
features.isPolicyHttpStatusEnabled
özelliğinin değeri doğru, aşağıdaki
şu davranış gerçekleşir:
- İstek: Herhangi bir istek akışına eklenen tehdit koruması politikasıyla birlikte, geçersiz mesajlar ilgili politika hatasıyla birlikte bir 400 Hatalı İstek durum kodu döndürün kodunu girin (ExecutionFailed yerine).
- Yanıt: Her yanıt akışına eklenen tehdit koruması politikasıyla birlikte, geçersiz mesajlar 500 Dahili Sunucu Hatası durum kodu döndürebilir ve ilgili politika hata kodları atılır (yalnızca ExecutionFailed yerine).
Cloud müşterilerinin, kuruluş mülküdür.