JxBrowser :(为什么)我可以(不)使用URI路径来缓存目录吗?

时间:2016-10-09 16:31:57

标签: jxbrowser

我不久前评估过JxBrowser。我想到了以下问题: 我可以使用Java URI来重新路由"来自Chromium底层引擎的所有临时文件都通过自定义FileSystemProvider,如encFs4J

我希望这样做的原因是遵守数据隐私法。由于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这样的东西。但是,由于必须安装虚拟硬盘驱动程序,因此在可用性方面并不好。这对于一个相当简单的问题来说太过分了。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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

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

选项1:RamDisk

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

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

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

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

由于可用性问题,未对此进行进一步研究。

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

  • 需要:SMB服务器实现(例如JVLAN for Java),创建服务器并共享代码
  • privileges:user(Ports 1445可以在Linux等下使用)
  • 可用性:对用户来说是无用的,但对于一个简单的问题来说却是一个非常复杂的解决方案

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

此选项还具有更多潜力,例如一旦读取文件就会清除文件,控制对第三方应用程序的访问权限以及更多 - 甚至是更怪异的想法。