如何用Java确保tmpfs挂载中的数据彻底删除且无法恢复?
关于tmpfs挂载文件安全删除的Java实现疑问
我的服务使用了一个与其他多个服务共享的tmpfs挂载,需要确保删除后的文件无法再被访问。在传统硬盘上我会用srm或shred工具,现在的思路是:针对tmpfs挂载,删除文件前先用零值覆盖其占用空间(仅单次覆盖,不需要随机值),以此确保内存中没有残留数据。
补充背景
- 文件最大可达300MB
- 服务运行在多租户环境,数据仅允许在有限时间内可访问
- 共享同一tmpfs挂载的服务都属于单一租户,但同一主机上运行多个这类基于Podman/Docker的服务
我希望降低内存内容被读取时的信息泄露风险,由于服务核心是Java开发,我想到两种实现方案:
- 使用
RandomAccessFile.writeBytes方法 - 使用
Files.newOutputStream,仅指定CREATE选项(默认选项包含TRUNCATE_EXISTING,可能导致写入无法真正覆盖内容)
两种方案我都会创建一个小型byte[],通过多次调用写入方法填充文件,避免创建和文件大小相同的字节数组。
请问这个思路是否合理?有没有推荐方案或经验可以分享?
内容的提问来源于stack exchange,提问作者Kariem
相关产品推荐
相关产品推荐

