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 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ı

&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> öğ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ı

&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> öğ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ı

&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> öğ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ı

&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 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.
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.
steps.xmlthreatprotection.SourceUnavailable 500 Bu hata, ileti <Source> öğesinde belirtilen değişken aşağıdakilerden biri olabilir:
  • Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
  • Şu geçerli değerlerden biri değil: request, response veya message
steps.xmlthreatprotection.NonMessageVariable 500 Bu hata, <Source> öğesi farklı bir değişkene ayarlanırsa şu türde değil: mesaj yazın.

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.

İlgili konular

JSON Tehdidi Koruma politikası

Normal İfade Koruması politikası