Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
Napíšte bezpečnostný kód , aby sa zabránilo pretečeniu útoky . V jazyku C , existuje celý rad ohrozených funkcií , ktoré môžu hackeri využiť k preplneniu vyrovnávacej pamäti . Minimalizovať použitie strcpy ( ) , strčí ( ) , sprintf ( ) a vsprintf ( ) , ktoré nevykonávajú kontroly hraníc . Ak je to možné , vyhnite sa použitiu dostane ( ) , ktorá nešpecifikuje , koľko znakov je potrebné čítať a tak opustí svoj kód zraniteľný . Ak použijete scanf ( ) , je nutné zadať šírku pre % s formátu nedošlo k prekročeniu .
2
Skontrolujte , či môžete použiť trampolíny , aby sa zabránilo pretečeniu vyrovnávacej pamäti . Vzhľadom k tomu , buffer overflow sa vyskytuje v stohy pamäti a nie v kóde , najjednoduchšie riešenie sa zdá byť zabránenie svoje stohy od vykonania akéhokoľvek kód vložením malý kúsok kódu k zákazu týchto akcií . To je možné v Linux , ale je veľmi ťažké . Len niekoľko kompilátorov používajú malé kúsky kódu , tzv trampolíny , ktoré pôsobia ako bariéra medzi kódu volajúceho funkciu a funkciu sám . Takže , ak škodlivý kód sa pokúsi prepísať buffer , trampolína môže zachytiť a zrušiť pokusy hackera .
3
Realizovať kompilátora nástroje , ktoré vám varovanie , ak použijete kód , ktorý sa vám ponecháva zraniteľné útok . Niektoré z týchto nástrojov bude generovať kód , ktorý zakázal neoprávnenému prístupu k nelegálnej adresy a vypne kód , ktorý sa pokúša tomto vykonávaní. Produkty , ako sú StackShield a StackGuard sú veľkým prínosom . StackSheild bude skúmať spiatočnú adresu funkcie a ukončiť v prípade nezrovnalosti . StackGuard kladie kanárikovo slovo na spiatočnú adresu a kontroly , aby zistil , či to slovo bol zmenený , ukončenie funkcie , ak ich má .
4 pre kontrolu bezpečnosti v dynamickom , beh
Nainštalujte nástroje ako libsafe - time prostredie . Libsafe beží na Linuxe a kontroluje najbližšej spiatočnú adresu z rámca zásobníka , potom zabezpečí , že adresa nie je prepísaný . Libsafe tiež nahradiť nebezpečné funkcie , ako je dostane ( ) , strcpy ( ) a scanf ( ) .