是否可以使用 File.Delete 或 File.Encrypt 來粉碎文件?還是這兩個函數都不會覆蓋磁盤上的實際內容?如果他們這樣做了,這是否也適用于 SSD 的磨損均衡和其他存儲的類似技術?或者我應該使用其他功能嗎?我正在嘗試改進一個開源項目,該項目當前以明文形式將憑據存儲在一個文件中。由于它們總是寫入該文件的原因(我不知道為什么 Ansible 這樣做,但現在我不想觸及那部分代碼,可能有一些正當理由,為什么會這樣,至少現在)然后我就可以刪除那個文件了。那么使用 File.Delete 或 File.Encrypt 是否是清除磁盤信息的正確方法?編輯:如果只能使用本機 API 和 pinvoke,我也同意。我不僅限于 .net,還包括 C#。Edit2:提供一些上下文:明文憑據由ansible內部保存,因為它們作為在目標Windows主機上執行的模塊的變量傳遞。該文件負責再次檢索變量:https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/powershell/Ansible.ModuleUtils.Legacy.psm1#L287 https://github.com /ansible/ansible/blob/devel/lib/ansible/module_utils/csharp/Ansible.Basic.cs#L373
1 回答

泛舟湖上清波郎朗
TA貢獻1818條經驗 獲得超3個贊
File.Encrypt 有可能比 File.Delete(在這方面肯定什么都不做)更能幫助粉碎數據,但這不是可靠的方法。
在操作系統和硬件級別都有很多事情發生,這是與 .NET 代碼分離的幾個抽象層。例如,您的文件系統可能會隨機決定移動它在磁盤上物理存儲文件的位置,因此覆蓋您當前認為文件所在的位置可能不會真正刪除文件先前存儲位置的痕跡。即使您成功地覆蓋了文件的正確部分,磁盤本身也經常會有殘留信號,可以被擁有合適設備的人拾取。一些文件系統并沒有真正覆蓋任何東西:它們只是在每次發生更改時添加信息,因此您總能及時找到磁盤在任何給定時間點的內容。
因此,如果您無法合法地阻止文件被保存,那么任何真正刪除它的嘗試都將是不完美的。如果您愿意接受不完美并且只想在某種程度上減輕問題的可能性,您可以使用您發現的策略嘗試多次用垃圾數據覆蓋文件并希望最好的結果。
但我不會很快放棄從源頭上解決問題。例如,Ansible 的文檔提到:
如果您不需要在每個主機的基礎上生成隨機密碼,那么密碼查找插件的一個很好的替代方案是在 playbook 中使用 Vault。閱讀那里的文檔并考慮先使用它,它對大多數應用程序來說更可取。
- 1 回答
- 0 關注
- 149 瀏覽
添加回答
舉報
0/150
提交
取消