如何从 Java Applet 检测当前安全上下文

发布于 2024-09-12 23:44:30 字数 353 浏览 19 评论 0原文

我有一个小程序需要访问主机系统(以启动程序、查询系统设置等)。该小程序已签名,当最终用户接受我的证书时,该小程序可以自由地在最终用户计算机上执行几乎所有其所需的操作。如果最终用户拒绝证书,小程序仍会运行,但无法履行其职责。

我已使用 System.getProperty("java.io.tmpdir") 来确定小程序是否受到限制。这在 Windows 上工作得很好,但不知何故 Java 在 Mac OS 上的行为有所不同。 (我认为 Java 的部分要点是拥有一种独立于系统且具有明确定义的行为的语言 - 但我最终为 Mac 和 Windows 编写了特定的代码 - 就像我对 C++ 所做的那样)。

是否有可靠的方法来确定小程序在什么安全上下文中运行?

I have an applet that needs access to the host system (to launch programs, query for system settings etc). The applet is signed, and when the end-user accepts my certificate, the applet is free to do pretty much whatever it desires on the end-users machine. If the end-user refuses the certificate, the applet is still run, but it cannot perform it's duties.

I have used System.getProperty("java.io.tmpdir") to determine if the applet is restricted. This works fine with Windows, but somehow Java behaves differently on Mac OS. (I thought part of the point with Java was to have a system-independent language with a well defined behavior - but I end up writing specific code for Mac and Windows - just like I do with C++).

Is there a reliable way to determine what security-context the applet is running within?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瑶笙 2024-09-19 23:44:30
public static boolean isTrusted() {
     SecurityManager security = System.getSecurityManager();
     if (security == null) {
         return true;
     } else {
         try {
             security.checkPermission(new AllPermission());
             return true;
         } catch (SecurityException exc) {
             return false;
         }
     }
}

(通常免责声明:未经测试,未经编译)

public static boolean isTrusted() {
     SecurityManager security = System.getSecurityManager();
     if (security == null) {
         return true;
     } else {
         try {
             security.checkPermission(new AllPermission());
             return true;
         } catch (SecurityException exc) {
             return false;
         }
     }
}

(Usual disclaimer: not tested, not compiled)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文