【问题标题】:Can encryption be solution in this situation在这种情况下加密可以解决吗
【发布时间】:2013-10-30 13:29:11
【问题描述】:

我正在使用 EMC Documentum 内容管理系统。我正在尝试在他们自己的 API 的帮助下自动化一些文件导入(将文件移动到 CMS 存储库)。 (下一句不要惊慌,只要阅读它,因为它的 EMC 自己的 API,你可能不知道)为此,我必须首先创建一个 IDfFile 类型的对象,然后将该对象传递给 IDfImportNode.add()执行导入。

我想做的是在运行时从一台服务器获取文件并立即执行导入操作。 我想在内存中完成所有这些操作,而不会将获取的文件保存在磁盘上 - 因为这些文件是机密文件

但问题是IdfFile(string) 采用要导入文件的绝对路径。所以文件必须物理存在磁盘上,即使我在导入后删除文件,最终也会在磁盘上留下文件痕迹。我在猜测它是否可以接受Stream 对象,但没有这样的重载。

所以我想知道我是否可以在保存到磁盘或任何其他方式之前加密文件。或者我要求 EMC 人员提供合适的 API 方法。

【问题讨论】:

  • 如果您可以访问内存中的密钥,并且您要隐藏文件的任何人都无法访问该内存,则将文件加密到光盘是可行的。再次阅读后,我看到您没有打开文件,而一些库代码是。读取时需要解密数据
  • 是否可以不使用IDfFileIDfInputStreamContent 传递给IDfImportNode.add()。这样您就不必将其保存到光盘。 (我不知道您使用的系统,但首先想到的是查看文档)。

标签: java encryption documentum


【解决方案1】:

如果文件确实是机密文件,并且您真的想费尽心思来保存它们,那么您应该首先对它们进行加密。

在磁盘上留下痕迹的文件应该是您最不必担心的问题,您需要对磁盘进行物理访问才能对其进行深度侦查以找出文件是什么。更现实的问题是攻击者获得对服务器的访问权限并读取类似的文件。

但还是要回答你的问题:

  • 加密可以解决很多问题,但请始终考虑是否值得。
  • 当然,您可以随时向“EMC 人员”寻求解决方案,尤其是在您有商业支持的情况下

【讨论】:

    【解决方案2】:

    要在磁盘上留下文件痕迹,很简单:加密磁盘。采取一些像 Truecrypt 这样的解决方案,加密整个磁盘,挂载它,运行你的程序。保存在磁盘中的所有内容都将被加密,但它对您的程序是透明的(它只会读取和写入设备,并且不必担心文件是否加密存储)。

    问题是:

    • 如果有人在这样做时可以访问您的计算机,他可以读取文件

    • 如果你的电脑被黑客入侵并且可以从外部访问,他可以读取文件

    【讨论】:

      【解决方案3】:

      执行此操作的方法是使用IDfSysObject.setContent() 方法。这将是更多代码,因为您不能使用 Import 操作方便,但它应该允许您保存流。也许是这样的(但你已经从某个地方获得了流):

      File pdfInput = new File("C:\\Rupinder\\MyFile.txt");
      byte[] outBytes = new byte[(int)pdfInput.length()];
      
      FileInputStream fileInputStream = new FileInputStream(pdfInput);
      fileInputStream.read(outBytes);
      
      ByteArrayOutputStream out = new ByteArrayOutputStream();
      out.write(outBytes);
      
      IDfSysObject sysObj = (IDfSysObject)session.newObject("c_pdf");
      sysObj.setObjectName("testDoc");
      sysObj.setContentType("crtext");
      sysObj.setTitle("import operation");
      sysObj.link("/Temp/Source Folder"); 
      sysObj.setContent(out);
      sysObj.save();
      

      来源:https://community.emc.com/message/98225

      【讨论】:

      • 是的,这似乎是精确的事情,但现在我意识到我使用 EWS Java API 获取的实际上是 Exchange 邮件的机密文件是由 EWS API 本身定义的EmailMessage 类型,它不可序列化,因此无法将它们转换为ByteArrayOutputStream。我为它提出了另一个线程here。如果您能提供帮助,请查看它,并且很抱歉没有指定正在处理 Exchange 邮件的事实。
      • 所以,是的,听起来这回答了这里的问题,但不是您的序列化新问题。既然你为那个(好)开了一个新问题,我建议你接受这个问题的答案,或者删除它,因为问题现在已经改变了。
      猜你喜欢
      • 1970-01-01
      • 2018-05-05
      • 1970-01-01
      • 1970-01-01
      • 2022-11-14
      • 1970-01-01
      • 2013-11-14
      • 2012-03-28
      • 2016-12-16
      相关资源
      最近更新 更多