Doporučené postupy zabezpečení pro jazyk C++
Tento článek obsahuje informace o nástrojích a postupech zabezpečení.Jejich použití nepovede k úplnému zabránění v útoku, ale sníží úspěšnost takovýchto útoků.
Bezpečnostní prvky aplikace Visual C++
Tyto funkce zabezpečení jsou integrovány do kompilátoru a propojovacího programu Visual C++:
/GS (kontrola zabezpečení vyrovnávací paměti)
Pověřuje překladač ke zjištění přetečení kódu ve funkcích, které mohou být zneužity.Při zjištění přetečení je provedeno zastavení.Ve výchozím nastavení je tato možnost zapnutá./SAFESEH (Bitová kopie má bezpečné obslužné rutiny výjimek)
Pověřuje propojovací program k vložení obrazu výstupní tabulky, která obsahuje adresu každé obslužné rutiny výjimky.Za běhu programu použije operační systém tuto tabulku k zajištění toho, aby byly vykonány pouze potřebné výjimky obslužné rutiny výjimky.To pomůže zabránit vykonání obslužných rutin výjimek zavedených k provedení nebezpečného útoku za běhu programu.Ve výchozím nastavení je tato možnost vypnutá./NXCOMPAT , /NXCOMPAT (kompatibilní s předcházením spuštění dat)
Tyto možnosti překladače a propojovacího programu umožňují kompatibilitu s DEP (Data Execution Prevention).DEP chrání CPU před vykonáním stránek bez kódu./analyze (Analýza kódu)
Tato možnost kompilátoru aktivuje analýzu kódu, která hlásí možné bezpečnostní problémy, jako jsou například přetečení vyrovnávací paměti, neinicializovaná paměť, zrušení reference na nulový ukazatel a nevrácení paměti.Ve výchozím nastavení je tato možnost vypnutá.Další informace naleznete v tématu Přehled Analýzy kódu pro C/C++./DYNAMICBASE (Použít modul pro náhodné určení rozložení adresního prostoru)
Tato možnost propojovacího programu umožňuje vytvářet spustitelnou bitovou kopii, která může být zavedena na různých místech paměti na začátku spouštění.Tato volba také způsobí, že je umístěný balík v paměti mnohem méně předvídatelný.
Rozšířené zabezpečení CRT
Modul CRT (C Runtime Library) byl rozšířen tak, aby obsahoval bezpečné verze funkcí, které představují možné riziko zabezpečení, například nekontrolovaná funkce strcpy pro kopírování řetězců.Protože jsou starší nezabezpečené verze těchto funkcí zastaralé, způsobují upozornění během kompilace.Důrazně doporučujeme, abyste používali bezpečné verze těchto CRT funkcí namísto pouhého potlačení upozornění.Další informace naleznete v tématu Funkce zabezpečení v CRT.
SafeInt – knihovna
Knihovna SafeInt – knihovna pomáhá předcházet celočíselnému přetečení a jinému zneužití chyb, které mohou nastat v aplikaci při provádění matematických operací.Knihovna SafeInt obsahuje třídu SafeInt – třída, třídu SafeIntException – třída a několik funkcí Funkce jazyka SafeInt.
Třída SafeInt chrání proti celočíselnému přetečení a využití dělení nulou.Lze je použít pro porovnání hodnot různých datových typů.První poskytuje dvě zásady zpracování chyb.Výchozí zásada je určena pro třídu SafeInt k vyvolání výjimky SafeIntException pro oznámení, proč nemůže být matematická operace dokončena.Druhá zásada je určena pro třídu SafeInt k zastavení vykonávání programu.Můžete také definovat vlastní zásady.
Každá funkce SafeInt chrání jednu matematickou operaci před zneužitelnou chybou.Můžete použít dva různé typy parametrů, aniž by bylo nutné je převést na stejný typ.K ochránění více matematických operací použijte třídu SafeInt.
Checked – iterátory
Zaškrtnutý iterátor si vynutí hranice kontejneru.Když je kontrolovaný iterátor mimo hranice, ve výchozím nastavení se vygeneruje výjimka a ukončí se vykonávání programu.Kontrolovaný iterátor poskytuje další úrovně reakcí, které závisí na přiřazených hodnotách preprocesoru, definovaných například jako _SECURE_SCL_THROWS nebo _ITERATOR_DEBUG_LEVEL.Například nastavení _ITERATOR_DEBUG_LEVEL=2, poskytuje zaškrtnutému iterátoru komplexní kontrolu správnosti v režimu ladění, které jsou k dispozici pomocí nepodmíněných výrazů.Další informace naleznete v tématu Checked – iterátory.
Analýza kódu pro spravovaný kód
Analýza kódu pro spravovaný kód, také známa jako FxCop, kontroluje sestavení pro shodu s postupy návrhu rozhraní .NET Framework.FxCop analyzuje kód a metadata v rámci každého sestavení, aby vyhledal vady v následujících oblastech:
Knihovna designu
Lokalizace
Zásady vytváření názvů
Výkon
Zabezpečení
Nástroj ověřovatel aplikací systému Windows
Verifikátor aplikací (AppVerifier) vám může pomoci určit potenciální problémy s kompatibilitou, stabilitou a zabezpečením aplikace.
Nástroj Ověřovatel aplikací sleduje, jak aplikace používá operační systém.Sleduje systém souborů, registr, paměť a rozhraní API za chodu aplikace a doporučuje opravy zdrojového kódu pro problémy, které nalezl.
Nástroj AppVerifier lze použít k:
Testování na potenciální chyby kompatibility aplikace způsobené obecnými programátorskými chybami.
Prozkoumá aplikaci otázkami, souvisejícími s pamětí.
Určit možné problémy zabezpečení v aplikaci.
Nástroj Ověřovatel aplikací je součástí sady nástrojů pro kompatibilitu aplikací, která je k dispozici v části Kompatibilita aplikací na webu TechNet.
Bezpečnostní prvky rozhraní .NET Framework
Configuring Security Policy popisuje pokyny a nástroje pro úpravu bezpečnostních zásad rozhraní .NET Framework.
Uživatelské účty systému Windows
Použitím uživatelských účtů systému Windows, které patří do skupiny Administrators, poukazují vývojářům a--potažmo--zákazníkům na bezpečnostní rizika.Další informace naleznete v tématu Spuštění jako člen skupiny Users a Jak ovlivňuje nástroj Řízení uživatelských účtů (UAC) vaši aplikaci.
Viz také
Referenční dokumentace
Koncepty
Jak ovlivňuje nástroj Řízení uživatelských účtů (UAC) vaši aplikaci