Uso di funzioni stringa sicure

Molti problemi di sicurezza del sistema sono causati da una gestione del buffer insufficiente e dall'overrun del buffer risultante. La gestione del buffer scarsa è spesso associata alle operazioni di manipolazione delle stringhe. Le funzioni di manipolazione delle stringhe standard fornite dalle librerie di runtime del linguaggio C/C++ (strcat, strcpy, sprintf e così via) non impediscono la scrittura oltre la fine dei buffer.

Due nuovi set di funzioni di manipolazione delle stringhe, denominate funzioni di stringa sicure, forniscono un'elaborazione aggiuntiva per la gestione corretta del buffer nel codice. Queste funzioni stringa sicure sono disponibili in Windows Driver Kit (WDK) e per Microsoft Windows XP SP1 e versioni successive di Driver Development Kit (DDK) e Windows SDK. Sono destinati a sostituire le controparti C/C++ predefinite e routine simili fornite da Windows.

Un set di funzioni stringa sicure è per l'uso nel codice in modalità kernel. Queste funzioni vengono prototipo in un file di intestazione denominato Ntstrsafe.h. Questo file di intestazione e una libreria associata sono disponibili in WDK.

L'altro set di funzioni stringa sicure è usato nelle applicazioni in modalità utente. Un file di intestazione corrispondente, Strsafe.h, contiene prototipi per queste funzioni. Tale file e una libreria associata sono disponibili in Windows SDK. Per altre informazioni su Strsafe.h, vedere Uso delle funzioni Strsafe.h.

Il set di funzioni stringa sicure in modalità kernel è costituito dai due subset seguenti:

Le funzioni stringa sicure in modalità kernel forniscono le funzionalità seguenti:

  • Ogni funzione stringa sicura riceve le dimensioni del buffer di destinazione come input. La funzione può quindi garantire che non venga scritta oltre la fine del buffer.

  • Le funzioni stringa Unicode e ANSI terminano tutte le stringhe di output con un carattere NULL, anche se l'operazione tronca il risultato previsto.

  • Tutte le funzioni stringa sicure restituiscono un valore NTSTATUS, con un solo codice di esito positivo possibile (STATUS_SUCCESS).

  • La maggior parte delle funzioni stringa sicure è disponibile sia in una versione con conteggio dei byte che in una versione con conteggio dei caratteri. Ad esempio, RtlStringCbCata concatena due stringhe con conteggio byte e RtlStringCchCata concatena due stringhe con conteggio dei caratteri.

  • La maggior parte delle funzioni stringa sicure è disponibile in una versione estesa e suffisso ex-suffisso che offre funzionalità aggiuntive. Ad esempio, RtlStringCbCatExa estende la funzionalità di RtlStringCbCata.

Questa sezione include gli argomenti seguenti:

Riepilogo delle funzioni stringa sicure Kernel-Mode

Importazione di funzioni stringa sicure Kernel-Mode