Aracılığıyla paylaş


XML Okuyucusu

XML Okuyucusu, XML giriş kaynağının üzerindeki bir imleçtir. Bir XML Okuyucusu, bir kerede bir XML Düğümü okur, ancak bir dizi düğümü okumayı kolaylaştıran ek yardımcı API'ler vardır.

Aşağıdaki okuyucu girişi türleri desteklenir:

Güvenlik

Okuyucu, bir öğede bulunan özniteliklerin benzersiz olduğunu doğrular. Bu doğrulamayı gerçekleştirmek için gereken süre, öğesindeki öznitelik sayısının WS_XML_READER_PROPERTY_MAX_ATTRIBUTESkadar büyük olabilecek bir işlevidir. Bu nedenle, WS_XML_READER_PROPERTY_MAX_ATTRIBUTES büyük bir değere ayarlandığında büyük belgeleri işlemek hizmet reddi saldırısı için bir fırsat sunabilir.

Okuyucu, her öğe ve öznitelik için ön ekleri ad alanlarına eşler. Bu eşlemeyi gerçekleştirmek için gereken süre, kapsamdaki xmlns özniteliklerinin sayısının WS_XML_READER_PROPERTY_MAX_NAMESPACESkadar büyük olabilecek bir işlevidir. Bu nedenle, bu özellik büyük bir değere ayarlandığında büyük belgeleri işlemek hizmet reddi saldırısı için bir fırsat sunabilir.

Okuyucu, belgenin xml dil bilgisi belirtimine uyduğundan ve ayrıca özelliklerinin belirtilen kotalar içinde olduğundan emin olsa da, güvenilmeyen bir kaynaktan geldiğinde belgenin içeriği yine de güvenilmeyen olarak kabul edilmelidir. Okuyucu kullanıcıları, WsReadToStartElementkullanarak, WsFindAttributekullanarak veyadüğümlerini el ile inceleyerek tüm öğe ve öznitelik adlarını ve ad alanlarını denetlemelidir.

Dikkate alınması gereken diğer bazı durumlar şunlardır ancak bunlarla sınırlı değildir:

  • Beklenen öğeler eksik olabilir
  • Beklenmeyen öğeler görünebilir
  • Beklenen öznitelikler eksik olabilir
  • Beklenmeyen öznitelikler görünebilir
  • Öğeler boş öğeler olarak görünebilir
  • Boşluk beklenmeyen yerlerde görünebilir

Okuyucu kullanıcıları yalnızca belgeden okunan değerlere göre bellek ayırmamalıdır. Örneğin, aşağıdaki xml belgesini göz önünde bulundurun:

<array count='1000000'>
   <!-- malicious document provider didn't actually provide 1000000 array items -->
</array>

Dizi tabanlı bir diziyi, bazı öğe sayısının takip edeceği varsayımı üzerine ayırma, olası bir saldırı vektörü olabilir. Bu durumda okuyucunun kullanıcısı bunun yerine öğeler görünürken belleği artımlı olarak ayırmalıdır.

XML okuyucu DTD'i desteklemez. Okuyucunun kullanıcısının DTD doğrulaması konusunda endişelenmesi gerekmez.

XML okuyucuları ile aşağıdaki geri çağırma kullanılır:

XML okuyucuları ile aşağıdaki numaralandırmalar kullanılır:

Aşağıdaki işlevler XML okuyucularla birlikte kullanılır:

XML okuyucuları ile aşağıdaki tanıtıcı kullanılır:

XML okuyucuları ile aşağıdaki yapılar kullanılır: