Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 在delphi7中安全删除文件_Security_Delphi_File Io - Fatal编程技术网

Security 在delphi7中安全删除文件

Security 在delphi7中安全删除文件,security,delphi,file-io,Security,Delphi,File Io,我需要在完成输入文件后安全地删除它,此时我正在用零覆盖所有数据,这很混乱,因为我的临时文件夹中充满了旧文件。文件名也是一个安全问题 我希望他们跳过并消失,而不仅仅是将其移动到回收站,这是与按字节擦除相结合的,因为数据恢复软件可以从回收站之外恢复项目。由于名称也很重要,我需要在删除它们之前重命名它们。这是一个渐进的问题。对于一个应用程序来说“安全”的东西对于另一个应用程序来说是不安全的。如果安全性非常重要,并且您发现自己在堆栈溢出问题上提出了这类问题,那么很可能需要与外部安全顾问签订合同。真正重要

我需要在完成输入文件后安全地删除它,此时我正在用零覆盖所有数据,这很混乱,因为我的临时文件夹中充满了旧文件。文件名也是一个安全问题


我希望他们跳过并消失,而不仅仅是将其移动到回收站,这是与按字节擦除相结合的,因为数据恢复软件可以从回收站之外恢复项目。由于名称也很重要,我需要在删除它们之前重命名它们。

这是一个渐进的问题。对于一个应用程序来说“安全”的东西对于另一个应用程序来说是不安全的。如果安全性非常重要,并且您发现自己在堆栈溢出问题上提出了这类问题,那么很可能需要与外部安全顾问签订合同。真正重要的示例包括财务信息、医疗记录或任何其他法律或合同要求保护数据的内容。我不是说这意味着或者暗示你没有能力解决这个问题,而是要指出这是一个相当复杂和不断发展的问题

基本上要完成你想要完成的事情:

  • 一旦您编写的代码完成,然后将文件大小更改为空-这使得恢复更加困难,因为原始文件大小丢失
  • 然后将文件(重命名文件)重命名为其他名称
  • 最后使用DeleteFile删除文件,这样不会将文件移动到回收站
  • 请确保在文件在磁盘上的整个过程中都保持文件的独占句柄,否则可以在删除文件之前对其进行复制

    正如我所说,这是一个渐进的问题。这是一个非常基本的解决方案,并且存在许多漏洞。因此,根据所需的安全级别,您可能会考虑不允许将文件写入磁盘或使用多遍覆盖。如果安全性真的很重要,那么在高温下烧掉硬盘盘片,然后砸碎它是确保安全的唯一方法


    编辑:似乎您删除了代码示例。

    删除文件可能是一个棘手的问题

    根据客户的需要,我想指出这种现象。这是简单覆盖后留下的剩余数据。是一种销毁剩余数据的方法

    关于如何擦除剩余数据,有一些标准,主要由“安全文件删除”应用程序引用,但显然

    截至2007年6月版的DSS C&SM,不再进行覆盖(&S) 可接受的卫生处理 磁性介质;仅消磁或 物理破坏是可以接受的


    因此,我想说的是,尝试获取客户必须遵守的规则。

    有第三方实用程序可以从命令中执行此类操作-我发现它具有此功能,如果您四处搜索,您可能会从命令行找到一个免费应用程序来执行此操作。然后,您可以从应用程序中调用该命令,以便安全地删除该文件

    我想说的是,如果您坚持要编写自己的代码来实现这一点,那么不要使用所有0,而是将随机字节写入磁盘。并且不要使用内置的C++ RAND函数,使用更安全的随机数生成器。
    正如Jim McKeeth所说,如果出错会产生严重的法律后果,那么这不是你想自己做的事情。

    Jim已经很好地描述了用代码解决问题的问题。这个问题确实是渐进的,您实现的任何解决方案都只会近似于完全安全,而永远无法实现。因此,要做的一件事是准确地确定保护文件所需的内容(窥探家庭成员?同事?公司间谍?极权政府?),然后据此设计解决方案并记录其局限性


    不过我有一个正交的建议。除了在代码中实现安全擦除之外,您还可以要求用户的合作。例如,您可以建议(或要求)将输入文件存储在加密卷上。在公司环境中,PGP磁盘可能是首选,因为它是一个可识别的品牌,而家庭用户可以很好地使用免费且经过良好测试的TrueCrupt。这两种产品都支持创建虚拟加密卷以及加密整个分区。这对于确保输入文件的名称和内容的安全非常重要,甚至在您编写一行代码之前。

    请注意闪存中使用的“磨损均衡”算法。为了促进均匀磨损,文件在驱动器上移动,应用程序甚至操作系统都看不到文件。因此,您可以根据需要“安全删除”文件,并且只影响文件的最新副本。但以前的拷贝可以通过恢复软件恢复/发现。所以解决这个问题的唯一方法是加密文件内容。

    请注意:有一项科学研究表明,多次覆盖只是浪费时间。一次覆盖具有相同的结果和效果。