Sdílet prostřednictvím


Funkce zabezpečení v CRT

Mnoho funkcí starých CRT mají novější, je bezpečnější verze.Pokud existuje funkce zabezpečení, starší, méně bezpečnou verzi je označen jako nepoužívaný a nové verze má _s příponu ("bezpečné").

V tomto kontextu "se" pouze znamená, že není doporučeno používat funkce; neznamená, že funkce je naplánováno odebrána z CRT.

Funkce zabezpečení zabránit nebo opravit chyby zabezpečení; spíše jejich zachycení chyb při jejich výskytu.Pro chybové podmínky provádějí dodatečné kontroly a o chybě, mohou vyvolat obslužná rutina chyb (viz Ověření parametru).

Například strcpy funkce nemá žádnou Pokud řetězec, který je kopírování je příliš velká pro cílové vyrovnávací paměti.Však jeho protějšku zabezpečené strcpy_s, má velikost vyrovnávací paměti jako parametr, takže můžete určit, pokud přetečení vyrovnávací paměti dojde.Používáte-li strcpy_s jedenáct znaky zkopírujete do vyrovnávací paměti deset znaků, který je chyba na straně; strcpy_snelze opravit vaše chybu, ale vaše chyba rozpoznat a informovat vyvoláním zpracování neplatný parametr.

Odstranění varování o odmítání příznaku

Existuje několik způsobů odstraňování varování o odmítání příznaku pro starší, méně bezpečné funkce.Nejjednodušší je jednoduše definovat _CRT_SECURE_NO_WARNINGS nebo upozornění pragma.Buď bude zakázat upozornění o odmítání příznaku, ale samozřejmě stále existují problémy zabezpečení, které způsobily varování.Je mnohem lepší ponechat odmítání příznaku upozornění povoleno a využít výhod nových funkcí zabezpečení CRT.

V jazyce C++, nejjednodušší je použít Přetížení zabezpečení šablony, což v mnoha případech bude odstraňování varování odmítání příznaku nahrazením volání do nové zabezpečené verze funkce volání již nepoužívaných funkcí.Zvažte například toto volání se strcpy:

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

Definování _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES jako 1 eliminuje změnou upozornění strcpy volání strcpy_s, zabraňuje přetečení.Další informace naleznete v tématu Přetížení zabezpečení šablony.

Pro ty již nepoužívaných funkcí bez přetížení šablona zabezpečení jednoznačně zvažte ruční aktualizace kódu použít zabezpečené verze.

Jiný zdroj varování o odmítání příznaku, nesouvisejících se zabezpečením je funkce standardu POSIX.Nahradit ekvivalenty standard POSIX názvy funkcí (například změnit přístupu na _access), nebo zakázat upozornění související POSIX odmítání příznaku definováním _CRT_NONSTDC_NO_WARNINGS.Další informace naleznete v tématu Deprecated CRT Functions.

Další funkce zabezpečení

Některé funkce zabezpečení patří:

  • Parameter Validation.Parametry předané funkce CRT jsou ověřovány v obě funkce zabezpečení a existujících verzí funkce.Tato ověření patří:

    • Kontrola NULL hodnoty je předán do funkce.

    • Kontrola platnosti výčtové hodnoty.

    • Kontrola, zda jsou nedílnou hodnoty do platného rozsahu.

  • Další informace naleznete v tématu Ověření parametru.

  • Obslužnou rutinu pro neplatné parametry je také přístupný pro vývojáře.Při vzniku neplatný parametr namísto vyjadřování a ukončení aplikace, CRT umožňuje zkontrolovat tyto problémy s _set_invalid_parameter_handler funkce.

  • Sized Buffers.Funkce zabezpečení vyžadují velikost vyrovnávací paměti předány všechny funkce, která se zapisuje do vyrovnávací paměti.Zabezpečená verze ověřit, zda vyrovnávací paměť dostatečně velkou před zápisem, pomáhá zabránit chybám přetečení nebezpečných vyrovnávací paměti, které by mohla umožnit spuštění škodlivého kódu.Tyto funkce obvykle vrátit errno zadejte kód chyby a vyvolat obslužnou rutinu neplatný parametr, pokud velikost vyrovnávací paměti je příliš malá.Funkce, které číst ze vstupní vyrovnávací paměti, jako například gets, mají zabezpečené verze, které vyžadují zadání maximální velikosti.

  • Null termination.Některé funkce, které mají levé potenciálně bez řetězců ukončených zabezpečené verze, které zajistí, že řetězce jsou řádně null ukončena.

  • Enhanced error reporting.Zabezpečené funkce vrací chybové kódy s další informace o chybě, než bylo k dispozici existujících funkcí.Funkce zabezpečení a mnoho existujících funkcí nyní nastavit errno a často vracet errno kód typu také poskytnout lepší zasílání zpráv o chybách.

  • Filesystem security.Zabezpečení I/O rozhraní API podpory zabezpečení souborů aplikace access v případě výchozí soubor.

  • Windows security.Proces zabezpečení rozhraní API vynutit zásady zabezpečení a umožnit ACL stanovené.

  • Format string syntax checking.Neplatný řetězce jsou zjištěny, například pomocí nesprávného typu pole znaků v printf formát řetězce.

Viz také

Referenční dokumentace

Přetížení zabezpečení šablony

Funkce knihovny CRT

Koncepty

Ověření parametru