Какая-либо причина использовать SecureZeroMemory () вместо memset () или ZeroMemory (), когда безопасность не является проблемой?

В этой статье MSND говорится SecureZeroMemory() хорошо для случаев, когда уязвимые данные, хранившие в памяти некоторое время, должны быть наверняка перезаписаны как можно скорее, когда больше не необходимый. Ответы на это ТАК подвергают сомнению, объясняют, почему это может иметь значение.

Теперь есть ли любой с тех пор в использовании SecureZeroMemory() для инициализации просто каждого блока памяти? Например, в одном проекте я вижу код как следующее:

ICONINFO ii; 
::SecureZeroMemory(&ii, sizeof(ICONINFO)); 
if (::GetIconInfo(hIcon, &ii)) 
{
    //do stuff, then 
    //release bitmaps 
    if(ii.hbmMask) 
        ::DeleteObject(ii.hbmMask); 
    if(ii.hbmColor) 
        ::DeleteObject(ii.hbmColor); 
} 

почему использование SecureZeroMemory() здесь вместо ZeroMemory(), memset() или инициализация значения? Я имею в виду, решает ли компилятор, что инициализация является ненужной и хочет оптимизировать его - почему я осуществил бы его? Есть ли любая причина использовать SecureZeroMemory() здесь?

11
задан Community 23 May 2017 в 12:24
поделиться

2 ответа

Нет смысла использовать SecureZeroMemory для инициализации информационной структуры иконки. Она может перезаписать только те байты стека, которые должны были быть надежно стерты в другом месте. Эта лошадь уже сбежала из сарая. Инициализировать его вообще не имеет смысла, возвращаемое значение GetIconInfo() говорит о том, что он инициализировался.

SecureZeroMemory() имеет смысл только после заполнения памяти безопасными данными.

12
ответ дан 3 December 2019 в 04:13
поделиться

SecureZeroMemory - это никогда не оптимизируется компилятором. Это важно, если вам нужно беспокоиться о содержимом вашей памяти, которое нужно очистить, скажем, если она содержит очень чувствительную информацию о пользователе, например, банковское программное обеспечение, пароли и т.д. Очевидно, что если вам не нужно беспокоиться о таких вещах, вы можете использовать любой другой способ очистки буферов памяти или не очищать их вообще, если в этом нет необходимости.

13
ответ дан 3 December 2019 в 04:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: