Aracılığıyla paylaş


Güvenli Dize İşlevlerini Kullanma

Birçok sistem güvenlik sorunu, zayıf arabellek işleme ve sonuçta ortaya çıkan arabellek taşmalarından kaynaklanır. Zayıf arabellek işleme genellikle dize işleme işlemleriyle ilişkilendirilir. C/C++ dil çalışma zamanı kitaplıkları (strcat, strcpy, sprintfvb.) tarafından sağlanan standart dize işleme işlevleri, arabelleklerin sonunun ötesinde yazı yazmayı engellemez.

güvenli dize işlevleriolarak adlandırılan iki yeni dize işleme işlevi kümesi, kodunuzda uygun arabellek işleme için ek işleme sağlar. Bu güvenli dize işlevleri, Windows Sürücü Seti'nde (WDK) ve Microsoft Windows XP SP1 ve Driver Development Kit (DDK) ile Windows SDK'nın sonraki sürümlerinde kullanılabilir. Yerleşik C/C++ karşılıklarını ve Windows tarafından sağlanan benzer yordamları değiştirmeleri amaçlanmıştır.

Bir dizi güvenli dize işlevi, çekirdek modu kodunda kullanıma yöneliktir. Bu işlevler Ntstrsafe.h adlı bir üst bilgi dosyasında prototip olarak oluşturulur. Bu üst bilgi dosyası ve ilişkili bir kitaplık WDK'de kullanılabilir.

Diğer güvenli dize işlevleri kümesi, kullanıcı modu uygulamalarında kullanıma yöneliktir. Buna karşılık gelen bir üst bilgi dosyası olan Strsafe.h, bu işlevler için prototipler içerir. Bu dosya ve ilişkili kitaplık Windows SDK'sında kullanılabilir. Strsafe.h hakkında daha fazla bilgi için bkz. Strsafe.h İşlevlerini kullanma.

Çekirdek modu güvenli dize işlevleri kümesi aşağıdaki iki alt kümeden oluşur:

Çekirdek modu güvenli dize işlevleri aşağıdaki özellikleri sağlar:

  • Her güvenli dize işlevi, hedef arabelleğin boyutunu giriş olarak alır. Bu şekilde, işlevin arabelleğin ötesine yazmadığından emin olmasını sağlayabilir.

  • Unicode ve ANSI dize işlevleri, işlem istenen sonucu kesse bile tüm çıkış dizelerini NULL karakterle sonlandırır.

  • Tüm güvenli dize işlevleri, yalnızca bir olası başarı kodu (STATUS_SUCCESS) ile bir NTSTATUS değeri döndürür.

  • Güvenli dize işlevlerinin çoğu hem bayt sayısı hem de karakter sayılan sürümlerde kullanılabilir. Örneğin RtlStringCbCata iki bayt sayılan dizeyi birleştirir ve RtlStringCchCata iki karakter sayılan dizeyi birleştirir.

  • Güvenli dize işlevlerinin çoğu ek işlevsellik sağlayan genişletilmiş, Ex son ekli bir sürümde kullanılabilir. Örneğin RtlStringCbCatExaRtlStringCbCataişlevini genişletir.

Bu bölüm aşağıdaki konuları içerir:

Güvenli Dize İşlevleri Özeti Kernel-Mode

Güvenli Dize İşlevlerini Kernel-Mode İçe Aktarma