可以一个 JApplet 用一个 JFileChooser 以便用户可以选择硬盘上的文件?或者这会违反 Java applet 安全性吗?(我假设正在使用默认的安全设置。我不想要求我的用户授予我额外的权限。)

有帮助吗?

解决方案

此主题表示您需要对小程序进行数字签名在允许 JFileChooser 之前。

其他提示

如前所述,您需要对小程序进行签名,这会在向用户提供小程序时出现“模糊的安全警告”。当用户接受运行此小程序时,该小程序将获得完全访问权限并像普通应用程序一样运行,但具有明显的安全隐患。对于我正在开发的 Web 应用程序,我也处于同样的困境,并且还不确定它是否会得到部署。

如果您正在处理较小的文件,您也可以使用网络浏览器中的内置文件浏览器并从服务器返回文件内容。

此外,您可以对签名的小程序采取一些安全措施:

  • 验证小程序代码的来源。

    URL appletUrl = MyApplet.class.getProtectionDomain().getCodeSource().getLocation();
    if(appletUrl.toString().equalsIgnoreCase(safeAppletUrl) == false)
       return false;
    
  • 验证运行小程序的基本 URL。

    URL documentUrl = this.getDocumentBase(); 
    if(documentUrl.toString().equalsIgnoreCase(safeDocumentUrl) == false)
       return false;
    

在这种情况下(使用默认设置),您是正确的,默认安全管理器不允许访问本地文件。

您可能必须使用PrivilegedAction从用户的硬盘驱动器中读取任何内容。正如@mmyers所说,你也必须签署你的applet。

所以你的答案是肯定的,我之前已经这样做了所以我知道可以做到。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top