Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. bilgi
Ne?
XML güvenlik açıklarıyla ilgilenin ve API'nize yapılan saldırı sayısını en aza indirin. İsteğe bağlı olarak, yapılandırılan sınırlara göre XML yükü saldırılarını tespit edin. Aşağıdaki yaklaşımları kullanarak XML tehditlerine karşı koruma sağlayın:
- Mesajları XML şemasına göre doğrulama (
.xsd) - Hariç tutulacak belirli anahtar kelimeler veya kalıplar için mesaj içeriğini değerlendirin.
- Bozuk veya hatalı biçimlendirilmiş iletileri ayrıştırılmadan önce algılama
Öğe referansı
Öğe referansı, XMLThreatProtection politikasının öğelerini ve özelliklerini açıklar.
<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> özellikleri
<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> öğesi
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 |
| Mevcut olma: | İsteğe bağlı |
| Tür: | Yok |
<NameLimits>/<Element> öğesi
XML belgesindeki herhangi bir öğe adında izin verilen maksimum karakter sayısıyla ilgili bir sınır belirtir.
Örneğin, aşağıdaki XML'yi ele alalım:
<book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> </book>
Yukarıdaki XML analiz edildiğinde, aşağıdaki politika snippet'indeki <Element> öğe değeri , öğe adlarının (book, title, author ve year)) 10 karakteri aşmadığını doğrular.
<NameLimits> <Element>10</Element> <Attribute>10</Attribute> <NamespacePrefix>10</NamespacePrefix> <ProcessingInstructionTarget>10</ProcessingInstructionTarget> </NameLimits>
| Varsayılan: | Bir sınır belirtmezseniz sistem, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: | Tamsayı |
<NameLimits>/<Attribute> öğesi
XML belgesindeki herhangi bir özellik adında izin verilen maksimum karakter sayısıyla ilgili bir sınır belirtir.
Örneğin, aşağıdaki XML'yi ele alalım:
<book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> </book>
Yukarıdaki XML analiz edildiğinde, aşağıdaki politika snippet'indeki <Attribute> öğe değeri, category özellik adının 10 karakteri aşmadığını doğrular.
<NameLimits> <Element>10</Element> <Attribute>10</Attribute> <NamespacePrefix>10</NamespacePrefix> <ProcessingInstructionTarget>10</ProcessingInstructionTarget> </NameLimits>
| Varsayılan: | Bir sınır belirtmezseniz sistem, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: | Tamsayı |
<NameLimits>/<NamespacePrefix> öğesi
XML belgesindeki ad alanı önekinde izin verilen maksimum karakter sayısıyla ilgili bir sınır belirtir.
Örneğin, aşağıdaki XML'yi ele alalım:
<ns1:myelem xmlns:ns1="http://ns1.com"/>
Yukarıdaki XML analiz edildiğinde, aşağıdaki politika snippet'indeki <NamespacePrefix> öğe değeri, ns1 ad alanı önekinde 10 karakteri aşılmadığını doğrular.
<NameLimits> <Element>10</Element> <Attribute>10</Attribute> <NamespacePrefix>10</NamespacePrefix> <ProcessingInstructionTarget>10</ProcessingInstructionTarget> </NameLimits>
| Varsayılan: | Bir sınır belirtmezseniz sistem, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: | Tamsayı |
<NameLimits>/<ProcessingInstructionTarget> öğesi
XML belgesindeki herhangi bir işleme talimatının hedefinde izin verilen maksimum karakter sayısıyla ilgili bir sınır belirtir.
Örneğin, aşağıdaki XML'yi ele alalım:
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
Yukarıdaki XML'yi analiz ederken aşağıdaki politika snippet'indeki <ProcessingInstructionTarget> öğe değeri, xml-stylesheet işlem talimatı hedefinin 10 karakteri aşmadığını doğrular.
<NameLimits> <Element>10</Element> <Attribute>10</Attribute> <NamespacePrefix>10</NamespacePrefix> <ProcessingInstructionTarget>10</ProcessingInstructionTarget> </NameLimits>
| Varsayılan: | Bir sınır belirtmezseniz sistem, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: | Tamsayı |
<Source> öğesi
XML yükü saldırılarına karşı taranacak mesaj. Bu genellikle request olarak ayarlanır. Bunun nedeni, istemci uygulamalarından gelen istekleri genellikle doğrulamanız gerekmesidir.
message olarak ayarlandığında bu öğe, istek akışına eklendiğinde istek iletisini, yanıt akışına eklendiğinde ise yanıt iletisini otomatik olarak değerlendirir.
<Source>request</Source>
| Varsayılan: | istek |
| Mevcut olma: | İsteğe bağlı |
| Tür: |
Dize.
|
<StructuralLimits> öğesi
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 |
| Mevcut olma: | İsteğe bağlı |
| Tür: | Yok |
<StructuralLimits>/<NodeDepth> öğesi
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, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: |
Tamsayı |
<StructuralLimits>/<AttributeCountPerElement> öğesi
Herhangi bir öğe için izin verilen maksimum özellik sayısını belirtir.
Örneğin, aşağıdaki XML'yi ele alalım:
<book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> </book>
<AttributeCountPerElement> öğe değeri, book, title, author ve year öğelerinin her birinde 2'dan fazla özellik olmadığını doğrular.
Ad alanlarını tanımlamak için kullanılan özelliklerin sayılmadığını unutmayın.
<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, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: |
Tamsayı |
<StructuralLimits>/<NameSpaceCountPerElement> öğesi
Herhangi bir öğe için izin verilen maksimum ad alanı tanımı sayısını belirtir.
Örneğin, aşağıdaki XML'yi 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 edildiğinde, aşağıdaki politika snippet'indeki <NamespaceCountPerElement> öğe değeri, e1 ve e2 öğelerinin her birinde 2 ad alanı tanımından fazla olmadığını doğrular. Bu durumda, <e1> öğesinin 0 ad alanı tanımı, <e2> öğesinin ise 2 ad alanı tanımı vardır: 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, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: |
Tamsayı |
<StructuralLimits>/<ChildCount> öğesi
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, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: |
Tamsayı |
Özellikler
| Özellik | Varsayılan | Varlık |
|---|---|---|
| includeComment | doğru | İsteğe bağlı |
| includeElement | doğru | İsteğe bağlı |
| includeProcessingInstructions | doğru | İsteğe bağlı |
| includeText | doğru | İsteğe bağlı |
<ValueLimits> öğesi
Politika tarafından kontrol edilecek ve uygulanacak 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 |
| Mevcut olma: | İsteğe bağlı |
| Tür: |
Yok |
<ValueLimits>/<Text> öğesi
XML belgesinde bulunan tüm metin düğümleri için bir karakter sınırı belirtir.
Örneğin, aşağıdaki XML'yi ele alalım:
<book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> </book>
<Text> öğe değeri, 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, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: |
Tamsayı |
<ValueLimits>/<Attribute> öğesi
XML belgesinde bulunan tüm özellik değerleri için bir karakter sınırı belirtir.
Örneğin, aşağıdaki XML'yi ele alalım:
<book category="WEB"> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> </book>
<Attribute> öğe değeri, WEB özellik değerinin 10 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, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: |
Tamsayı |
<ValueLimits>/<NamespaceURI> öğesi
XML belgesinde bulunan ad alanı URI'leri için bir karakter sınırı belirtir.
Örneğin, aşağıdaki XML'yi ele alalım:
<ns1:myelem xmlns:ns1="http://ns1.com"/>
<NamespaceURI> öğe değeri, ad alanı URI değeri http://ns1.com'nin 10 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, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: |
Tamsayı |
<ValueLimits>/<Comment> öğesi
XML belgesinde bulunan yorumlar için karakter sınırı belirtir.
Örneğin, aşağıdaki XML'yi ele alalım:
<book category="WEB"> <!-- This is a comment --> <title>Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> </book>
<Comment> öğe değeri, yorum metni This is a comment'in 10 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, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: |
Tamsayı |
<ValueLimits>/<ProcessingInstructionData> öğesi
XML belgesinde bulunan tüm işleme talimatı metinleri için bir karakter sınırı belirtir.
Örneğin, aşağıdaki XML'yi ele alalım:
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<ProcessingInstructionData> öğe değeri, işlem talimatı metninin type="text/xsl" href="style.xsl" 10 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, -1 varsayılan değerini uygular. Bu değer, sistem tarafından sınırsız olarak kabul edilir. |
| Mevcut olma: | İsteğe bağlı |
| Tür: |
Tamsayı |
Hata referansı
This section describes the fault codes and error messages that are returned and fault variables that are set by Edge when this policy triggers an error. This information is important to know if you are developing fault rules to handle faults. To learn more, see What you need to know about policy errors and Handling faults.
Runtime errors
These errors can occur when the policy executes.
| Fault code | HTTP status | Cause | Fix |
|---|---|---|---|
steps.xmlthreatprotection.ExecutionFailed |
500 | The XMLThreatProtection policy can throw many different types of ExecutionFailed errors. Most of these errors occur when a specific threshold set in the policy is exceeded. These types of errors include: element name length, child count, node depth, attribute count, attribute name length, and many others. You can see the complete list in the XMLThreatProtection policy runtime error troubleshooting topic. | build |
steps.xmlthreatprotection.InvalidXMLPayload |
500 |
This error occurs if the input message payload specified by the XMLThreatProtection policy's <Source> element is not a valid XML Document.
|
build |
steps.xmlthreatprotection.SourceUnavailable |
500 |
This error occurs if the message
variable specified in the <Source> element is either:
|
build |
steps.xmlthreatprotection.NonMessageVariable |
500 |
This error occurs if the <Source> element is set to a variable which
is not of type
message.
|
build |
Notes:
- The error name ExecutionFailed is the default error name and will be returned regardless of the type of error detected; however, this default can be changed by setting an organization-level property. When this property is set, the error name will reflect the actual error. For example, "TextExceeded" or "AttrValueExceeded". See Usage Notes for details.
- The 500 HTTP status is the default; however, the HTTP Status can be changed to 400 for request flow faults by setting an organization-level property. See Usage Notes for details.
Deployment errors
None.
Fault variables
These variables are set when a runtime error occurs. 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 Runtime errors table above. The fault name is the last part of the fault code. | fault.name Matches "SourceUnavailable" |
xmlattack.policy_name.failed |
policy_name is the user-specified name of the policy that threw the fault. | xmlattack.XPT-SecureRequest.failed = true |
Example error response
{ "fault": { "faultstring": "XMLThreatProtection[XPT-SecureRequest]: Execution failed. reason: XMLThreatProtection[XTP-SecureRequest]: Exceeded object entry name length at line 2", "detail": { "errorcode": "steps.xmlthreatprotection.ExecutionFailed" } } }
Example fault rule
<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ı
İnternet verilerini alan tüm sunucular, kötü amaçlı veya kasıtsız olarak saldırıya maruz kalabilir. Bazı saldırılar, arka uç sistemlerinin güvenliğini tehlikeye atma potansiyeli olan geçersiz belgeler oluşturarak XML'in esnekliğinden yararlanır. Bozuk veya son derece karmaşık XML belgeleri, sunucuların kullanılabilir olandan daha fazla bellek ayırmasına, CPU ve bellek kaynaklarının bağlanmasına, ayrıştırıcıların kilitlenmesine ve genel olarak ileti işlemeyi devre dışı bırakıp uygulama düzeyinde hizmet reddi saldırıları oluşturmasına neden olabilir.
Tehdide karşı koruma yapılandırma hatası
Bu politika için FaultRule'lar oluşturuyorsanız önemli bilgiler: Bir mesaj, JSON veya XML tehdit koruma politikasını geçemezse Edge varsayılan olarak HTTP 500 Dahili Sunucu Hatası durum kodu ve ExecutionFailed hata kodu oluşturur. Bu hata davranışını kuruluş düzeyinde yeni bir mülkle değiştirebilirsiniz. org
özelliği features.isPolicyHttpStatusEnabled true olarak ayarlandığında aşağıdaki
davranış gerçekleşir:
- İstek: Herhangi bir istek akışına tehdit koruma politikası eklenmişse geçersiz mesajlar, 400 Hatalı İstek durum kodu ve karşılık gelen bir politika hata kodu (yalnızca ExecutionFailed yerine) döndürür.
- Yanıt: Herhangi bir yanıt akışına tehdit koruma politikası eklenmişse geçersiz mesajlar yine 500 Dahili Sunucu Hatası durum kodunu döndürür ve yalnızca ExecutionFailed yerine ilgili politika hata kodlarından biri oluşturulur.
Cloud müşterileri, kuruluş özelliğini ayarlamak için Apigee Edge Destek Ekibi ile iletişime geçmelidir.