JSONThreatProtection politikası

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Ne

Diziler ve dizeler gibi çeşitli JSON yapılarında sınırlar belirtmenize olanak tanıyarak içerik düzeyindeki saldırıların oluşturduğu riski en aza indirir.

Video: JSONThreatProtection politikasının içerik düzeyindeki saldırılara karşı API'lerin güvenliğini nasıl sağlayabileceğiniz hakkında daha fazla bilgi edinmek için kısa bir video izleyin.

Video: Apigee çapraz bulut API platformuyla ilgili bu kısa videoya göz atın.

Öğe referansı

Öğe referansı, JSONThreatProtection politikasının öğelerini ve özelliklerini açıklar.

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-Threat-Protection-1">
   <DisplayName>JSONThreatProtection 1</DisplayName>
   <ArrayElementCount>20</ArrayElementCount>
   <ContainerDepth>10</ContainerDepth>
   <ObjectEntryCount>15</ObjectEntryCount>
   <ObjectEntryNameLength>50</ObjectEntryNameLength>
   <Source>request</Source>
   <StringValueLength>500</StringValueLength>
</JSONThreatProtection>

<JSONThreatProtection> özellikleri

<JSONThreatProtection async="false" continueOnError="false" enabled="true" name="JSON-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çerebilir. Bu değer 255 karakterden uzun olamaz.

İsteğe bağlı olarak, politikayı yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için <DisplayName> öğesini kullanın.

Yok Gerekli
continueOnError

Bir politika başarısız olduğunda hata döndürülmesi için false olarak ayarlayın. Bu, çoğu politika için beklenen davranıştır.

Bir politika başarısız olduktan sonra bile akış yürütülmesinin devam etmesi için true değerine ayarlayın.

false İsteğe bağlı
enabled

Politikayı uygulamak için true değerine ayarlayın.

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

true İsteğe bağlı
async

Bu özellik kullanımdan kaldırıldı.

false Kullanımdan kaldırıldı

<DisplayName> öğesi

Politikayı, yönetim kullanıcı arayüzü proxy düzenleyicisinde farklı bir doğal dil adıyla etiketlemek için name özelliğine ek olarak kullanın.

<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

<ArrayElementCount> öğesi

Bir dizide izin verilen maksimum öğe sayısını belirtir.

<ArrayElementCount>20</ArrayElementCount>
Varsayılan: Bu öğeyi belirtmezseniz veya negatif bir tam sayı belirtirseniz sistem herhangi bir sınır uygulamaz.
Bulunma: İsteğe bağlı
Tür: Tamsayı

<ContainerDepth> öğesi

Kapsayıcıların nesne veya dizi olduğu, izin verilen maksimum koruma derinliğini belirtir. Örneğin, nesne içeren bir nesne içeren bir dizi, 3'lük koruma derinliğiyle sonuçlanır.

<ContainerDepth>10</ContainerDepth>
Varsayılan: Bu öğeyi belirtmezseniz veya negatif bir tam sayı belirtirseniz sistem herhangi bir sınır uygulamaz.
Bulunma: İsteğe bağlı
Tür: Tamsayı

<ObjectEntryCount> öğesi

Bir nesnede izin verilen maksimum giriş sayısını belirtir.

<ObjectEntryCount>15</ObjectEntryCount>
Varsayılan: Bu öğeyi belirtmezseniz veya negatif bir tam sayı belirtirseniz sistem herhangi bir sınır uygulamaz.
Bulunma: İsteğe bağlı
Tür: Tamsayı

<ObjectEntryNameLength> öğesi

Bir nesne içindeki özellik adı için izin verilen maksimum dize uzunluğunu belirtir.

<ObjectEntryNameLength>50</ObjectEntryNameLength>
Varsayılan: Bu öğeyi belirtmezseniz veya negatif bir tam sayı belirtirseniz sistem herhangi bir sınır uygulamaz.
Bulunma: İsteğe bağlı
Tür: Tamsayı

<Source> öğesi

JSON yük saldırılarına karşı denetlenecek mesaj. İstemci uygulamalarından gelen istekleri doğrulamanız gerektiği için bu genellikle request olarak ayarlanır. message olarak ayarlandığında bu öğe, istek akışına eklendiğinde istek mesajını ve yanıt akışına eklendiğinde yanıt mesajını otomatik olarak değerlendirir.

<Source>request</Source>
Varsayılan: istek
Bulunma: İsteğe bağlı
Tür:

Dize.

Geçerli değerler: istek, yanıt veya mesaj.

<StringValueLength> öğesi

Bir dize değeri için izin verilen maksimum uzunluğu belirtir.

<StringValueLength>500</StringValueLength>
Varsayılan: Bu öğeyi belirtmezseniz veya negatif bir tam sayı belirtirseniz sistem herhangi bir sınır uygulamaz.
Bulunma: İsteğe bağlı
Tür: Tamsayı

Hata referansı

Bu bölümde, bu politika bir hatayı tetiklediğinde Edge tarafından ayarlanan hata kodları ile hata mesajları ve döndürülen hata mesajları ile Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Bu bilgiyi, hataları ele almak için hata kuralları geliştirip geliştirmediğinizi bilmeniz önemlidir. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler ve Hataları işleme bölümlerine bakın.

Çalışma zamanı hataları

Politika yürütüldüğünde bu hatalar ortaya çıkabilir.

Hata kodu HTTP durumu Neden Düzelt
steps.jsonthreatprotection.ExecutionFailed 500 JSONThreatProtection politikası birçok farklı ExecutionFailed hatası verebilir. Bu hataların çoğu, politikada ayarlanan belirli bir eşik aşıldığında ortaya çıkar. Bu hata türleri arasında şunlar bulunur: nesne girişi adı uzunluğu, nesne girişi sayısı, dizi öğesi sayısı, kapsayıcı derinliği, dize dizesi değeri uzunluğu. Bu hata, yük geçersiz JSON nesnesi içerdiğinde de oluşur.
steps.jsonthreatprotection.SourceUnavailable 500 Bu hata, <Source> öğesinde belirtilen message değişkeni şunlardan biriyse ortaya çıkar:
  • Kapsam dışında (politikanın yürütüldüğü belirli akışta kullanılamaz)
  • request, response veya message geçerli değerlerinden biri değil
steps.jsonthreatprotection.NonMessageVariable 500 Bu hata, <Source> öğesi mesaj türünde olmayan bir değişkene ayarlanırsa ortaya çıkar.

Dağıtım hataları

Yok.

Hata değişkenleri

Bu değişkenler, bu politika bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Politika hataları hakkında bilmeniz gerekenler bölümüne bakın.

Değişkenler Konum Örnek
fault.name="fault_name" fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelenen hatanın adıdır. Hata adı, hata kodunun son kısmıdır. fault.name Matches "SourceUnavailable"
jsonattack.policy_name.failed policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. jsonattack.JTP-SecureRequest.failed = true

Örnek hata yanıtı

{
  "fault": {
    "faultstring": "JSONThreatProtection[JPT-SecureRequest]: Execution failed. reason: JSONThreatProtection[JTP-SecureRequest]: Exceeded object entry name length at line 2",
    "detail": {
      "errorcode": "steps.jsonthreatprotection.ExecutionFailed"
    }
  }
}

Hata kuralı örneği

<FaultRule name="JSONThreatProtection Policy Faults">
    <Step>
        <Name>AM-CustomErrorResponse</Name>
        <Condition>(fault.name Matches "ExecutionFailed") </Condition>
    </Step>
    <Condition>(jsonattack.JPT-SecureRequest.failed = true) </Condition>
</FaultRule>

Şemalar

Kullanım notları

XML tabanlı hizmetler gibi, JavaScript nesne gösterimini (JSON) destekleyen API'ler de içerik düzeyinde saldırılara açıktır. Basit JSON saldırıları, bir hizmeti kilitlemek ve uygulama düzeyinde hizmet reddi saldırılarına neden olmak için JSON ayrıştırıcılara boğan yapıları kullanmaya çalışır. Tüm ayarlar isteğe bağlıdır ve hizmet gereksinimlerinizi potansiyel güvenlik açıklarına karşı optimize etmek için uyarlanmalıdır.

İlgili konular

JSONtoXML politikası

XMLThreatProtection politikası

regularExpressionProtection politikası