簡體   English   中英

什么時候應該使用SecureZeroMemory()?

[英]When should SecureZeroMemory() be used?

我找到了一些示例代碼:

addrinfo hints;
SecureZeroMemory(&hints, sizeof(hints));

有沒有理由在這里使用SecureZeroMemory()? 為什么不呢

addrinfo hints = {0};

示例代碼: http//msdn.microsoft.com/en-us/library/windows/desktop/ms742203(v = vs。85).aspx

如果(例如)變量在本范圍內不再使用(或者在編譯器證明它不會改變程序內部一致性的任何其他情況下),編譯器可以優化掉零聲明。 對於安全關鍵型內存,當涉及到檢查您內存的外部進程時,這可能會危及應用程序的安全性。 編寫SecureZeroMemory是為了不進行優化。

我無法確定為什么這個特定的代碼片段會選擇該函數而不是其他歸零內存范圍的方法。 這可能是代碼作者或誤入歧途的公司政策對其目的的誤解。

來自MSDN

當你想確保你的數據被及時覆蓋時,使用這個函數而不是ZeroMemory ,因為一些C ++編譯器可以通過完全刪除它來優化對ZeroMemory的調用。

另外,一個簡單的分配,沒有屏障,可以由硬件緩存,而不是長時間進入RAM。 或者可以優化局部變量。 SecureZeroMemory確保不會發生這種情況。

至於為什么用於初始化addrinfo ,一個明顯addrinfo相關問題,打敗了我。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM