Funzionalità di sicurezza in CRT

Numerose funzioni CRT recenti hanno più recente, più versioni sicure.Se una funzione protetta esiste, la versione precedente e meno sicura è contrassegnata come deprecato e la nuova versione ha _s (“protegger„) suffisso.

In questo contesto, deprecate significa semplicemente che l'utilizzo di una funzione non è consigliato; non indica che la funzione venga pianificata per essere rimossa da librerie CRT.

Le funzioni protette non impediscono o non correggere gli errori di sicurezza; piuttosto, rilevare gli errori quando si verificano.Eseguono controlli aggiuntivi per le condizioni di errore e nel caso di un errore, richiamare un gestore errori (vedere Convalida dei parametri).

Ad esempio, strcpy la funzione non consente di stabilire se la stringa che la copia è troppo grande per il suo buffer di destinazione.Tuttavia, la relativa controparte sicura, strcpy_s, accetta la dimensione del buffer come parametro, pertanto possibile determinare se un sovraccarico del buffer si verifichi.Se si utilizzano strcpy_s per copiare undici caratteri in un buffer di dieci-carattere, ovvero un errore nella parte; strcpy_s non è possibile correggere l'errore, ma può rilevare errori e notificare richiamando il gestore non valido di parametro.

Eliminazione degli avvisi di deprecate

Esistono diversi modi per eliminare gli avvisi di deprecate per le funzioni precedenti e meno sicure.La più semplice è semplicemente di definire _CRT_SECURE_NO_WARNINGS oppure utilizzare warning pragma.O disabilita gli avvisi di deprecate, ma naturalmente i problemi di sicurezza che hanno causato nuovamente gli avvisi sono presenti.È preferibile lasciare gli avvisi di deprecate abilitati e usufruire delle nuove funzionalità di sicurezza CRT.

In C++, il modo più semplice per eseguire che è possibile utilizzare Assicurarsi che gli overload del modello, che in molti casi eliminerà gli avvisi di deprecate sostituendo le chiamate alle funzioni deprecate con chiamate al nuovo garantiscono che le versioni di queste funzioni.Ad esempio, si consideri la chiamata a deprecata strcpy:

   char szBuf[10]; 
   strcpy(szBuf, "test"); // warning: deprecated 

definizione _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES ad esempio 1 viene eliminato l'avviso modificando strcpy chiamata a strcpy_s, che impedisce i sovraccarichi del buffer.Per ulteriori informazioni, vedere Assicurarsi che gli overload del modello.

Per le funzioni deprecate senza fornire gli overload del modello, è necessario certamente considerare la possibilità di aggiornare manualmente il codice per utilizzare le versioni sicure.

Un'altra origine degli avvisi di deprecate, indipendente dalla sicurezza, è le funzioni di gestione POSIX.Nomi di funzione di sostituzione POSIX con i relativi equivalenti standard (ad esempio, modifica accesso in _access), o disabilitare gli avvisi POSIX-correlati della definizione _CRT_NONSTDC_NO_WARNINGS.Per ulteriori informazioni, vedere Deprecated CRT Functions.

Funzionalità di sicurezza aggiuntive

Alcune delle funzionalità di sicurezza includono quanto segue:

  • Parameter Validation.I parametri passati alle funzioni CRT vengono convalidati, nelle nuove funzioni e in molte versioni preesistenti delle funzioni.Tali convalide includono:

    • Verifica di NULL valori passati alle funzioni.

    • Controllare i valori enumerati la validità.

    • Controllare che i valori integrali siano in intervalli validi.

  • Per ulteriori informazioni, vedere Convalida dei parametri.

  • Un gestore per i parametri non validi verrà inoltre accessibile allo sviluppatore.Quando un si del parametro non valido, anziché affermazione di e uscire dall'applicazione, CRT fornisce una modalità per controllare questi problemi con _set_invalid_parameter_handler funzione.

  • Sized Buffers.Le funzioni protette richiedono che le dimensioni del buffer siano passate a qualsiasi funzione che scrive in un buffer.Le versioni sicure verificano che il buffer è sufficiente prima di scrivere, inerenti evitare errori non sicuri di sovraccarico del buffer che possono consentire al codice dannoso venga eseguito.Queste funzioni di solito restituito errno il tipo di codice di errore e viene richiamato il gestore non valido di parametro se la dimensione del buffer è insufficiente.Funzioni che hanno letto dai buffer di input, ad esempio gets, dispongono di versioni sicure che richiede di specificare una dimensione massima.

  • Null termination.Alcune funzioni che consentono alle stringhe potenzialmente non terminate per avere versioni sicure che garantiscono che le stringhe siano correttamente con terminazione null.

  • Enhanced error reporting.I codici di errore restituiti di funzioni protette con ulteriori informazioni sugli errori disponibile con le funzioni qualsiasi.Le funzioni protette e molte delle funzioni preesistenti ora impostate errno e restituiscono spesso errno tipo di codice inoltre, fornire una segnalazione errori.

  • Filesystem security.Il canale sicuro di I/O di file API fornisce l'accesso ai file nel caso predefinito.

  • Windows security.Il processo sicuro API applicare i criteri di sicurezza e consente agli ACL da specificare.

  • Format string syntax checking.Le stringhe non valide vengono rilevate, ad esempio, l'utilizzo dei caratteri di campo del tipo inprintf stringhe di formato.

Vedere anche

Riferimenti

Assicurarsi che gli overload del modello

Funzionalità della libreria CRT

Concetti

Convalida dei parametri