存储用于批处理作业的密码(Storing passwords for batch jobs)

2019-09-21 14:49发布

我有一个使用它需要授权webservice的一个小的java编。 因此Java PROG(这是使用Windows任务调度程序中运行)需要有一个用户名/密码的说法。 我怎么能存储这些地方,而不需要在文件中明文乱扔?

到目前为止,我已经使用调用Runtime.getRuntime和CACLS有明文文件,但改变权限,只允许车主可以打开它试图(没有工作,不知道为什么)。

如果我通过散列到web服务密码加密不工作,因为,web服务只是“哦,这?否认,迷路”,但如果我用私钥加密,你需要密码才能解密密码。 和我在哪里存储。 :P

救命? 请? :)

谢谢。

Answer 1:

简单的答案是:

你不能让它完全安全的,但你可以把它稍微更安全。

你无法散列密码,因为这会妨碍它是由你的程序中使用。

你可以把密码文件,并使用操作系统权限保护的文件。 您将需要允许执行程序的过程中读取权限。 这将阻止任何没有管理员权限,从观看的密码。

您可以加密密码,并提供你的程序中的关键。 这那些谁可以读取该文件,但不会停止(甚至放慢了)有人访问密码和程序防止密码随便观察。

还有什么是多还是少剧院。



Answer 2:

我怎么可以存储这些地方,而不需要趴在一个文件中明文身边?

没有“文件”保存会做太困难。 反正在某一时刻,你必须检索某个位置的密码。

  • 使用一些对称的加密混淆这样一个快速哈希值不透露您的密码
  • 使用操作系统的文件系统(只读使用该程序的用户,没有访问所有其他),以保护本地磁盘上的文件或者把它的外部驱动器(闪存)上。


Answer 3:

有没有办法,你可以保持您的密码安全,如果有人有权访问该跑步机。 保持在内存中的某个地方加密密码是最安全的方式,我认为,就像运行的服务解决方案上面提出。

对于更老练的方式,你可以创建一个后台程序,它允许您键入密码,保存在内存中加密的,并传递通过IPC(插座)加密文本到你的java程序,那么你的程序将其解密使用。 但我绝不会做这... ... Hihihi



Answer 4:

两个问题:

  1. 为什么你需要将它们存储在外部的程序? 为什么你的Java程序中不编码(你或者用户需要改变他们?)
  2. 你可以存储他们的外部,但加密 ? 例如,你可以使用加密的公钥,并存储在程序本身内的私有密钥。 因此,编码对知名度不应该的问题。

你有问题,无论任何一种方法的,因为你可以很容易地拆卸的Java程序。 无论您选择哪种方法,拆卸将使脆弱。



Answer 5:

一种选择是不使用Windows任务调度,而是把你的程序作为服务。 这样做,你可以使用密码作为参数开启一次为您服务。 然后,密码保留在内存中为您服务,你不需要保存它了。

设置程序作为服务可以很容易地与完成的Java服务包装



文章来源: Storing passwords for batch jobs