磁盘安全
您可以使用 wipe 工具来完成此任务。
如果您在 Mono/Linux 上运行 ASP.NET,则可以通过 Process
类使用 wipe
命令(确保已安装 wipe 包)。
如果您在 Windows 上运行,则采用相同的方法。当您需要安全处理文件时,请使用能够执行硬件清理的 wipe.exe
实用程序。
我发现了一个网站,它分发免费的 wipe.exe,这个实用程序不包含在 Windows 标准安装中(太糟糕了)。
第二种方法是实现Guttman 算法,但我认为使用别人的代码更便宜。
请记住,wipe 非常 I/O 密集,不要等待它完成,否则可能会严重拖慢应用程序。另外,在高负载的网站上,您可能会遇到显着的减速。
内存安全
SecureString
类可帮助您在内存中不留下字符串的痕迹。但是,当您处理文件时,实际上是在处理流。我不确定是否需要担心易失性内存的内容(即使您处理 WikiLeaks 文件)。
您必须首先执行威胁分析,告诉您内存的主要威胁是什么。以下是一些问题:
- 某人是否可以使用具有执行内存转储能力的管理员/根帐户访问服务器?(普通用户无法读取您的内存,.NET 防止指针未使用而导致缓冲区溢出)
- 某人是否可以物理访问服务器?您是否足够信任托管提供商?您是否运行虚拟服务器?
如果答案不是“是”,则无需担心内存安全问题。
交换空间安全
即使您在 Windows 上运行,让我们称“swap”为分页文件或虚拟内存文件等。您可能考虑禁用它(确保您有足够的 RAM),或者您可能考虑对其进行加密(但会导致性能下降)。
但是,为了在运行时扫描您的交换文件,他必须是 root 用户,或者必须可以物理访问关闭的服务器。
如果数据过于敏感,我建议禁用交换。
[添加] 我相信您已经使用 SSL 上传文件,以防万一您忘记了某些原则...