Aracılığıyla paylaş


Temel SQLXML Güvenlik Konuları

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

Aşağıda, veri erişimi için SQLXML kullanımı için güvenlik yönergeleri yer almaktadır.

  • SQLXMLOLEDB sağlayıcısı, her belirli örnek için hangi SQLXML fonksiyonunun etkinleştirilmesi veya devre dışı bırakılması gerektiğini gösteren bayraklar ayarlamanıza olanak tanıyan bir StreamFlags özelliği sunar. Bu özelliği kullanarak SQLXML kullanımınızı özelleştirebilir ve sadece istediğiniz bileşenlerin etkin olduğundan emin olabilirsiniz. Daha fazla bilgi için SQLXMLOLEDB Provider (SQLXML 4.0) sayfasına bakınız.

  • SQLXML hataları meydana gelip geri döndüğünde, tablo isimleri, sütun adları veya tür bilgileri gibi veritabanı şeması hakkında bilgi içerebilirler. Bu hatalarla ilgilenirken dikkatli olmalısınız, böylece SQL Server kurulumunuzla ilgili bilgiler kullanıcılar tarafından amaçlanmamış veya ihtiyaç duyulmayan yerlerde kolayca bulunamaz.

  • SQL Server'a güncellemeleri sorgulamak veya göndermek için kullanıldığında, SQLXML değiş tokuş edilebilecek veri miktarına bir sınır koymaz ve işlemeye çalışmadan önce bir SQLXML yükündeki verinin boyutunu kontrol etmez. Uygulamanızı SQLXML kullanarak geliştirirken, sistemde veriyi işlemek için yeterli bellek olduğundan emin olmak sizin sorumluluğunuzdur. Örneğin, sunucudan veri sorgularken, istemcinin belleğinde yeterli alan olup olmadığını doğrulamalısın. Benzer şekilde, sunucuya veri yüklüyorsanız, sunucuda bunu işlemek için yeterli bellek ve sunucuda veriyi depolamak için yeterli disk depolama alanı olduğunu doğrulamanız gerekir.

  • SQLXML dinamik olarak Transact-SQL sorgular ve güncellemeler komutları üretir ve çalıştırılmak üzere SQL Server'a gönderir. SQLXML'nin sunucuyu sorgulayıp güncellemesinin tek yolu budur. Sonuçlar ya bir akış (XML) olarak ya da bir sıra seti olarak alınacaktır.

  • Sorgu sonuçlarını aldığında, SQLXML aldığı verilerin içeriğine göre herhangi bir işlem yapmaz. Verinin türü veya içeriğine göre ek işlem yapılmaz. Veriler hiçbir zaman eylemlerin yürütülmesi için kod olarak ele alınmaz.

  • XML Şablonları çalıştırılırken, SQLXML gönderilen şablonda bulunan XPath ve DBObject sorgularını Transact-SQL komuta dönüştürür ve bu sorular SQL Server'a karşı çalıştırılır. Bu komutlar yalnızca mevcut verileri etkiler. SQLXML tarafından oluşturulan komutlar veritabanının yapısını asla değiştirmez. Kullanıcılar, veritabanı yapısını değiştirmek için açık komutlar vermelidir. Örneğin, onları bir şablonun sql:query bloğuna dahil ederek.

  • DBObject sorguları ve XPath ifadeleri eşleme dosyaları üzerinden çalıştırılırken, SQLXML veritabanındaki verileri hiçbir şekilde değiştirmez.

  • SQLXML, XML ve SQL Server veri modelleri arasındaki farklılıklara dayanarak verilen veride biçimlendirme değişiklikleri yapabilir. Örneğin, bir zaman belirtme biçimi farklıdır. SQLXML bu farklılıkları çözmeye çalışacaktır. Sonuç olarak, bazı hassas bilgiler kaybolabilir.

  • SQLXML, verinin işlemesi için gereken süreye bir sınır koymaz. İşleme, bir hata oluşana veya işlem tamamlanana kadar devam eder.

  • SQLXML dosya sistemine yazmaz. Kullanıcılar veritabanından aldıkları verileri kaydetmek istiyorlarsa, bunu kodlarında yapmak zorundalar.

  • SQLXML, kullanıcıların veritabanına karşı istedikleri herhangi bir SQL sorgusunu çalıştırmasına olanak tanır. Bu işlevsellik asla güvenli olmayan veya kontrolsüz bir kaynağa maruz kalmamalıdır, çünkü bu, SQL veritabanını hiçbir kullanıcıya sunulmadan açmak anlamına gelir.

  • Updategrams çalıştırıldığında, SQLXML updg:sync bloklarını SQL Server örneğine karşı DELETE, UPDATE ve INSERT komutlarına çevirir. Bu komutlar yalnızca mevcut verileri etkiler. SQLXML tarafından oluşturulan komutlar veritabanını asla değiştirmez. Kullanıcılar, veritabanı yapısını değiştirmek için açık komutlar vermelidir. Örneğin, onları bir şablonun sql:query bloğuna dahil ederek.

  • DiffGrams çalıştırıldığında, SQLXML DiffGram'ı SQL Server örneğine karşı DELETE, UPDATE ve INSERT komutlarına çevirir. Bu komutlar yalnızca mevcut verileri etkiler. SQLXML tarafından oluşturulan komutlar veritabanını asla değiştirmez. Kullanıcılar, veritabanı yapısını değiştirmek için açık komutlar vermelidir. Örneğin, onları bir şablonun sql:query bloğuna dahil ederek.

Ayrıca Bkz.

SQLXML 4.0 Güvenlik Değerlendirmeleri