XMLThreatProtection politikası

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>

&lt;XMLThreatProtection&gt; ö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ı. 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

&lt;NameLimits&gt; öğ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

&lt;NameLimits&gt;/&lt;Element&gt; öğ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ı

&lt;NameLimits&gt;/&lt;Attribute&gt; öğ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ı

&lt;NameLimits&gt;/&lt;NamespacePrefix&gt; öğ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ı

&lt;NameLimits&gt;/&lt;ProcessingInstructionTarget&gt; öğ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ı

&lt;Source&gt; öğ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.

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

&lt;StructuralLimits&gt; öğ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

&lt;StructuralLimits&gt;/&lt;NodeDepth&gt; öğ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ı

&lt;StructuralLimits&gt;/&lt;AttributeCountPerElement&gt; öğ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 öğelerinin her birinde en fazla 2 özellik var. 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ı

&lt;StructuralLimits&gt;/&lt;NameSpaceCountPerElement&gt; öğ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ı

&lt;StructuralLimits&gt;/&lt;ChildCount&gt; öğ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ı

&lt;ValueLimits&gt; öğ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

&lt;ValueLimits&gt;/&lt;Text&gt; öğ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> öğesi değeri aşağıdaki snippet'i kullandığınızda Learning XML, Erik T. Ray, ve 2003 öğe metin değerlerinin her birinin 15 karakteri aşmadığını doğrulayabilirsiniz.
<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ı

&lt;ValueLimits&gt;/&lt;Attribute&gt; öğ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> öğesi 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ı

&lt;ValueLimits&gt;/&lt;NamespaceURI&gt; öğ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ı

&lt;ValueLimits&gt;/&lt;Comment&gt; öğ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> öğesi 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ı

&lt;ValueLimits&gt;/&lt;ProcessingInstructionData&gt; öğ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 analiz edilirken <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ı

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ı

Ç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.

İlgili konular

JSON Tehdidi Koruma politikası

Normal İfade Koruması politikası