1

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

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

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

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

4

3 回答 3

2

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

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

但仍然要回答你的问题:

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

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

问题是:

  • 如果有人在执行此操作时可以访问您的计算机,则他可以读取文件

  • 如果您的计算机以某种方式被黑客入侵并且可以从外部访问,他可以读取文件

于 2013-10-30T13:51:49.553 回答
1

做到这一点的方法是使用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

于 2013-10-30T17:08:17.013 回答