XMLThreatProtection politikası

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ı. name özelliğinin değeri Harf, sayı, boşluk, kısa çizgi, alt çizgi ve nokta içermelidir. Bu değer, 255 karakteri aşmalıdır.

İsteğe bağlı olarak, politikayı<DisplayName> yönetim arayüzü proxy düzenleyicisinde farklı bir doğal dil adı kullanabilir.

Yok Zorunlu
continueOnError

Bir politika başarısız olduğunda hata döndürmesi için false olarak ayarlayın. Bu beklenen bir durumdur çoğu politika için geçerli olur.

Akış yürütmenin bir politikadan sonra bile devam etmesi için true olarak ayarlayın başarısız olur.

false İsteğe bağlı
enabled

Politikayı uygulamak için true olarak ayarlayın.

Politikayı devre dışı bırakmak için false değerine ayarlayın. Bu politika, bir akışa bağlı kalsa bile uygulanır.

true İsteğe bağlı
async

Bu özelliğin desteği sonlandırıldı.

false Kullanımdan kaldırıldı

&lt;DisplayName&gt; öğ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 name özelliğinin değeri: kullanılır.

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.

request, response veya message arasından seçim yapın.

<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>
Yukarıdaki XML analiz edildiğinde, aşağıdaki politika snippet'indeki <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>
Yukarıdaki XML analiz edilirken aşağıdaki politika snippet'indeki <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>
Yukarıdaki XML analiz edilirken aşağıdaki politika snippet'indeki <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"/>
Yukarıdaki XML'i analiz ederken aşağıdaki politika snippet'indeki <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>
Yukarıdaki XML'yi analiz ederken aşağıdaki politika snippet'indeki <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"?>
Yukarıdaki XML'yi analiz ederken aşağıdaki politika snippet'indeki <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.
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.
steps.xmlthreatprotection.SourceUnavailable 500 This error occurs if the message variable specified in the <Source> element is either:
  • Out of scope (not available in the specific flow where the policy is being executed)
  • Is not one of the valid values request, response, or message
steps.xmlthreatprotection.NonMessageVariable 500 This error occurs if the <Source> element is set to a variable which is not of type message.

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.

İlgili konular

JSON tehdit koruma politikası

Normal İfade Koruma Politikası