【问题标题】:Check if my Java application was started from Network检查我的 Java 应用程序是否从网络启动
【发布时间】:2014-06-20 14:40:58
【问题描述】:

我必须检查是否有人通过网络启动了我的 Java 应用程序,以便如果它是从另一台机器启动的,我可以关闭该应用程序。

该解决方案必须适用于 Windows 和 Linux。

我想解释当前工作目录可能是一个起点,但我不知道 Java 类;提供我需要的功能。

【问题讨论】:

  • 不确定您的应用程序或您想要做什么 // 如果您希望应用程序仅在特定机器上运行,可能让应用程序检查您设置的非常具体且唯一的注册表值.这样,如果没有设置该值,它就不会在另一台机器上运行。 // 嗯,我猜这仅适用于 Windows。 // 也许只是让应用程序在启动时提示输入密码?
  • 这是为了检测不遵守您的许可方案的用户吗?

标签: java file-io network-programming filepath


【解决方案1】:

为什么?如果是出于安全原因,那么您可能不走运。如果攻击者可以在您的机器上创建一个进程,那么他将能够使用您的程序检查的任何环境属性来创建一个进程,以确定“用户”是远程还是本地。

如果是出于安全原因,那么您应该尝试阻止攻击者与机器进行通信。

如果是出于其他目的,那么您确实没有提供足够的信息。什么样的“应用”?本地用户通常如何启动它?远程用户将如何尝试启动它?等等

【讨论】:

  • 那个“答案”没有帮助!我必须注意我的应用程序是否位于“maschine A”上,而“maschine B”上的某个人启动了该应用程序。为您提供所需的信息。在这种情况下,我必须初始化一种不同类型的通信,并且在这种情况下它可能会发生,“当前工作目录”将被删除,只要应用程序在存储它的同一台机器上启动,这是不可能的。跨度>
  • @Luke,对不起。我可能应该在评论中这么说。我的问题仍然存在。您的“应用程序”是如何部署的?它是桌面应用程序吗?命令行应用程序?它是否部署在 servlet 容器中?等等。本地用户如何启动它?远程用户做了什么不同?在您更详细地描述问题之前,您可能不会得到任何有用的答案。
  • 你为什么要知道,我为什么要那样做。相信我,我有充分的理由这样做!如果你已经知道你不能帮助我,问这个问题是很烦人的.关于更多信息,假设用户双击我的应用程序,这是一个独立的java进程。没有命令行,没有 servlet 容器。
  • @Luke,“从另一台机器开始”的含义并不像您想象的那么简单。由 sshed 的用户从命令行提示符开始?由双击远程 Windows 桌面或远程 X Window 系统桌面上的图标的用户启动?通过网络浏览器启动?由 citrix 用户启动?您用来确定用户是否“远程”(或者“远程”甚至意味着)的技术将取决于此应用程序在何种环境中运行,以及用户通常如何会启动它。
猜你喜欢
  • 1970-01-01
  • 2013-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
  • 2013-01-05
  • 2012-01-15
  • 1970-01-01
相关资源
最近更新 更多