Udostępnij za pośrednictwem


strict_gs_check

Ta dyrektywa pragma zapewnia, sprawdzanie zwiększonych zabezpieczeń.

#pragma strict_gs_check([push,] on ) 
#pragma strict_gs_check([push,] off ) 
#pragma strict_gs_check(pop)

Uwagi

Nakazuje kompilatorowi, aby wstawić losowe pliku cookie w stosie funkcji pomaga wykrywać niektóre rodzaje przepełnienia buforu opartego na stosie.Domyślnie opcja kompilatora/GS (kontrola bezpieczeństwa buforów) nie wstawia plik cookie dla wszystkich funkcji.Aby uzyskać więcej informacji, zobacz / GS (kontrola zabezpieczeń buforu).

Należy skompilować z kluczem/GS (bufor Kontrola bezpieczeństwa) umożliwiające strict_gs_check.

Użyj ta dyrektywa pragma w modułach kodu, które są narażone na potencjalnie szkodliwych danych.Ta dyrektywa pragma jest bardzo agresywne i jest stosowany do funkcji, które mogą być niepotrzebne tej obrony, ale jest zoptymalizowany, aby zminimalizować jego wpływ na wydajność aplikacji wynikowej.

Nawet jeśli używasz tej pragma powinieneś dążyć do zapisu bezpiecznego kodu.Oznacza to upewnić się, że w kodzie jest nie przekroczenia buforu.strict_gs_check mogą być chronione aplikacji z przepełnienia bufora, które pozostają w kodzie.

Przykład

W poniższym kodzie przepełnienie buforu występuje, gdy będziemy kopiowania tablicy do lokalnej tablicy.Podczas kompilowania ten kod z kluczem/GS, pliki cookie nie jest wstawiany w stosie, ponieważ typ danych array jest wskaźnik.Dodawanie strict_gs_check pragma wymusza cookie stosu warstwy do stosu funkcji.

// pragma_strict_gs_check.cpp
// compile with: /c

#pragma strict_gs_check(on)

void ** ReverseArray(void **pData,
                     size_t cData)
{
    // *** This buffer is subject to being overrun!! ***
    void *pReversed[20];

    // Reverse the array into a temporary buffer
    for (size_t j = 0, i = cData; i ; --i, ++j)
        // *** Possible buffer overrun!! ***
            pReversed[j] = pData[i]; 

    // Copy temporary buffer back into input/output buffer
    for (size_t i = 0; i < cData ; ++i) 
        pData[i] = pReversed[i];

    return pData;
}

Zobacz też

Informacje

Dyrektywy pragma i __Pragma słowa kluczowego

/ GS (kontrola zabezpieczeń buforu)