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>
<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ı |
<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>
<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ı |
<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>
<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ı |
<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"/>
<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>
<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ı |
<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"?>
<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. | 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ı
Ç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.