3

不久前我评估了JxBrowser。我想到了以下问题:我可以使用 Java URI 通过像encFs4J这样的自定义 FileSystemProvider 从底层 Chromium 引擎“重新路由”所有临时文件吗?

我想要这样做的原因是遵守数据隐私法。由于 Web 应用程序不能强制浏览器清除其缓存或以安全的方式存储任何临时文件,因此我想我可以使用 JxBrowser。如果我可以自己处理所有文件,我可以做一些加密魔法,这样(几乎)没有人可以访问我的应用程序之外的数据。

有一个 API 可以通过 BrowserContextParams 定义目录。但是,只允许使用绝对路径。不接受 URI。

而不是做

BrowserContext context = new BrowserContext(new BrowserContextParams("C:\\Chromium\\Data"));
Browser browser1 = new Browser(context);

我想做类似的事情

BrowserContext context = new BrowserContext(new BrowserContextParams(new URI("enc+file:///C:/Chromium/Data"));
Browser browser1 = new Browser(context);

有谁知道如何利用 JxBrowser 等进程的文件处理例程?我可以以某种方式添加此功能,例如围绕它的包装器吗?

我考虑过为此使用 VeraCrypt 之类的东西。但这在可用性方面并不好,因为您必须安装虚拟硬盘驱动程序。对于一个相当简单的问题来说,这太过分了。

4

2 回答 2

0

我将接受 Artem 对原始问题的回答。隐身/私人浏览器会话——只要它们不在硬盘上存储任何东西——将是一个完美而简单的解决方案。


此外,我想分享我对这个主题的研究。以下答案与 JxBrowser 无关,但与任何不支持 URI 路径或需要额外保护(临时)文件的第三方应用程序和库有关。

选项 1:RamDisk

  • 需要:ram 磁盘的内核模式驱动程序
  • 权限:管理员一次(安装驱动程序)
  • 可用性:如果应用程序可以通过代码处理 ram 磁盘(未研究),可能是无缝的

安装可以“捕获”文件的 RamdDisk。如果 ram 磁盘仅在应用程序运行时仍然存在,则它已被自动清理。(未研究可行性)使用自己的 ram 磁盘实现可以执行额外的步骤。

选项 2:虚拟文件系统,例如 VeraCrypt

  • 需要: VeraCrypt,内核模式驱动程序
  • 权限:管理员一次(安装驱动程序)
  • 可用性:用户必须在使用应用程序之前手动挂载容器

由于可用性问题,没有进一步研究。

选项 3:具有本地共享的嵌入式 SMB 服务器

  • 需要:SMB 服务器实现(例如 Java 的 JVLAN),创建服务器并共享代码
  • 权限:用户(Linux等下可以使用1445端口)
  • 可用性:对用户来说似乎没有问题,但对于一个简单的问题来说是一个相当复杂的解决方案

步骤:通过代码启动SMB服务器,添加共享和用户身份验证(可选),将共享挂载到本地驱动器(windows)或挂载点(linux),使用绝对路径访问本地挂载的共享上的文件。如果应用程序崩溃,则 SMB 服务器的“真实”文件加密的易失性/内存中的密钥将丢失,并且文件不会被其他人看到。

这个选项还有更多的潜力,比如一旦文件被读取就清除,控制对第三方应用程序的访问等等——甚至更奇怪——的想法。

于 2016-10-11T13:11:06.197 回答
0

JxBrowser 中的底层 Chromium 引擎不使用 Java IO API 来访问文件。只有一个传递给 Chromium 引擎的数据目录的路径字符串,它自己决定如何处理所有 IO 操作。

Chromium 中有一种模式称为隐身模式。在该模式下,所有文件,包括 cookie、缓存、历史记录都存储在内存中,没有任何内容存储在硬盘驱动器上,因此一旦关闭应用程序,所有数据将自动清除。如果这符合您的要求,我们可以研究如何在 JxBrowser 中启用隐身模式。

于 2016-10-11T12:43:35.463 回答