Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk a biztonsági eszközökkel és gyakorlatokkal kapcsolatos információkat tartalmazza. Ezek használata nem teszi az alkalmazásokat védetté a támadástól, de kevésbé valószínű, hogy sikeres támadásokat hajt végre.
A Microsoft C++ biztonsági funkciói
Ezek a biztonsági funkciók a Microsoft C++ fordítóba és a linkerbe vannak beépítve:
/guard (Control Flow Guard engedélyezése)
A fordító a fordításkor elemzi a közvetett hívási célok vezérlését, majd futásidőben a célok ellenőrzésére szolgáló kódot beszúrja.
/GS (Puffer biztonsági ellenőrzése)
Utasítja a fordítót, hogy szúrjon be túlfutási észlelési kódot a kihasználtság kockázatának kitett függvényekbe. Túlfuttatás észlelésekor a végrehajtás leáll. Ez a beállítás alapértelmezés szerint be van kapcsolva.
/SAFESEH (A kép biztonsági kivételkezelőkkel rendelkezik)
Arra utasítja a linkert, hogy a kimeneti képben szerepeljen egy olyan tábla, amely tartalmazza az egyes kivételkezelők címét. Futásidőben az operációs rendszer ezt a táblát használja annak biztosítására, hogy csak a jogos kivételkezelők kerüljenek végrehajtásra. Ez segít megakadályozni a futtatáskor rosszindulatú támadás által bevezetett kivételkezelők végrehajtását. Alapértelmezés szerint ez a beállítás ki van kapcsolva.
/NXCOMPAT, /NXCOMPAT (Kompatibilis az adatvégrehajtás megelőzésével)
Ezek a fordító- és csatolóbeállítások lehetővé teszik az adatvégrehajtás-megelőzés (DEP) kompatibilitását. A DEP védi a processzort a nem kódoldalak végrehajtása ellen.
/analyze (Kódelemzés)
Ez a fordítóbeállítás aktiválja a kódelemzést, amely olyan lehetséges biztonsági problémákat jelez, mint a puffertúllépés, a nem inicializált memória, a nullmutató-halasztás és a memóriavesztés. Alapértelmezés szerint ez a beállítás ki van kapcsolva. További információ: Kódelemzés a C/C++ áttekintéséhez.
/DYNAMICBASE (Címtérelrendezés véletlenszerűsítése)
Ez a hivatkozás lehetővé teszi egy végrehajtható rendszerkép készítését, amely a végrehajtás elején a memóriában különböző helyeken tölthető be. Ez a beállítás a memória veremhelyét is sokkal kevésbé kiszámíthatóvá teszi.
Security-Enhanced Katódsugárcső
A C futtatókörnyezeti kódtár (CRT) ki lett egészítve a biztonsági kockázatokat jelentő függvények biztonságos verzióival – például a nem ellenőrzött sztringmásolási strcpy függvénnyel. Mivel ezeknek a függvényeknek a régebbi, nem biztonságos verziói elavultak, fordítási időre vonatkozó figyelmeztetéseket okoznak. Javasoljuk, hogy a fordítási figyelmeztetések mellőzése helyett használja ezeknek a CRT-függvényeknek a biztonságos verzióit. További információ: Biztonsági funkciók a CRT-ben.
SafeInt-kódtár
A SafeInt Library segít megelőzni az egész számok túlcsordulását és az alkalmazás matematikai műveletek végrehajtásakor esetlegesen előforduló egyéb hasznosítható hibákat. A SafeInt kódtár tartalmazza a SafeInt osztályt, a SafeIntException osztályt és számos SafeInt Függvényt.
Az SafeInt osztály védelmet nyújt az egész szám túlcsordulása és a zéró osztásos kihasználások ellen. Ezzel kezelheti a különböző típusú értékek összehasonlítását. Két hibakezelési szabályzatot biztosít. Az alapértelmezett szabályzat az, hogy az SafeInt osztály kivételt SafeIntException adjon ki, amely jelzi, hogy miért nem lehet matematikai műveletet végrehajtani. A második szabályzat az, hogy az osztály leállítja a SafeInt program végrehajtását. Egyéni szabályzatot is definiálhat.
Minden SafeInt függvény egy matematikai műveletet véd a kihasználható hibáktól. Kétféle paramétert használhat anélkül, hogy ugyanazt a típust alakítanák át. Több matematikai művelet védelméhez használja az osztályt SafeInt .
Ellenőrzött iterátorok
Egy ellenőrzött iterátor betartja a tároló határait. Alapértelmezés szerint, ha egy ellenőrzött iterátor túllépi a korlátokat, kivételt hoz létre, és befejezi a program végrehajtását. A ellenőrzött iterátor más válaszszinteket is biztosít, amelyek az előfeldolgozóhoz rendelt értékektől függnek, például _SECURE_SCL_THROWS és _ITERATOR_DEBUG_LEVEL. Egy ellenőrzött iterátor például a _ITERATOR_DEBUG_LEVEL=2-nál hibakeresési módban átfogó korrektségi ellenőrzéseket biztosít, amelyeket az assert parancsok használatával tesz elérhetővé. További információ: Ellenőrzött iterátorok és _ITERATOR_DEBUG_LEVEL.
Felügyelt kód kódelemzése
A felügyelt kód kódelemzése, más néven FxCop, ellenőrzi, hogy a szerelvények megfelelnek-e the.NET keretrendszer tervezési irányelveinek. Az FxCop elemzi az egyes szerelvények kódját és metaadatait, hogy ellenőrizze a hibákat a következő területeken:
Kódtár tervezése
Lokalizáció
Elnevezési konvenciók
Teljesítmény
Biztonság
Windows Alkalmazásellenőrző
Az Application Verifier (AppVerifier) segítségével azonosíthatja az alkalmazás lehetséges kompatibilitási, stabilitási és biztonsági problémáit.
Az AppVerifier figyeli, hogy egy alkalmazás hogyan használja az operációs rendszert. Figyeli a fájlrendszert, a beállításjegyzéket, a memóriát és az API-kat, miközben az alkalmazás fut, és forráskód-javításokat javasol az általa feltárt problémákhoz.
Az AppVerifier használatával:
Tesztelje a gyakori programozási hibák által okozott lehetséges alkalmazáskompatibilitási hibákat.
Vizsgálja meg az alkalmazást a memóriával kapcsolatos problémák esetén.
Az alkalmazás lehetséges biztonsági problémáinak azonosítása.
Windows felhasználói fiókok
A Rendszergazdák csoporthoz tartozó Windows-felhasználói fiókok használata biztonsági kockázatokat rejt a fejlesztők és a bővítmények számára. További információ: A felhasználói csoport tagjaként való futtatás és a felhasználói fiókok felügyelete (UAC) hatása az alkalmazásra.
Útmutató a spekulatív végrehajtási mellékcsatornákhoz
A C++ szoftver spekulatív végrehajtásioldali hardveres biztonsági réseinek behúzásáról és elhárításáról további információt a C++ spekulatív végrehajtási mellékcsatornák fejlesztői útmutatójában talál.
Lásd még
System.Security
Biztonság a .NET-ben
A felhasználói fiókok felügyelete (UAC) hatása az alkalmazásra