strict_gs_check
pragma
Ini pragma menyediakan pemeriksaan keamanan yang ditingkatkan.
Sintaks
#pragma strict_gs_check(
[push,
] {on
|off
})
#pragma strict_gs_check( pop )
Keterangan
Menginstruksikan pengkompilasi untuk menyisipkan cookie acak di tumpukan fungsi untuk membantu mendeteksi beberapa kategori buffer berbasis tumpukan yang diserbu. Secara default, /GS
opsi pengkompilasi tidak menyisipkan cookie untuk semua fungsi. Untuk informasi selengkapnya, lihat /GS
(Pemeriksaan Keamanan Buffer).
Kompilasi dengan menggunakan /GS
untuk mengaktifkan strict_gs_check
.
Gunakan ini pragma dalam modul kode yang terekspos ke data yang berpotensi berbahaya. strict_gs_check
adalah agresif pragma, dan diterapkan ke fungsi yang mungkin tidak memerlukan pertahanan ini, tetapi dioptimalkan untuk meminimalkan efeknya pada performa aplikasi yang dihasilkan.
Bahkan jika Anda menggunakan ini pragma, Anda harus berusaha untuk menulis kode aman. Artinya, pastikan kode Anda tidak memiliki overruns buffer. strict_gs_check
mungkin melindungi aplikasi Anda dari overruns buffer yang tetap ada di kode Anda.
Contoh
Dalam sampel ini, buffer overrun terjadi ketika kita menyalin array ke array lokal. Ketika Anda mengkompilasi kode ini dengan /GS
, tidak ada cookie yang dimasukkan dalam tumpukan, karena jenis data array adalah penunjuk. strict_gs_check
pragma Menambahkan kekuatan cookie tumpukan ke dalam tumpukan fungsi.
// 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;
}
Baca juga
Arahan Pragma dan __pragma
_Pragma
kata kunci
/GS
(Pemeriksaan keamanan buffer)
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk