美文网首页
如何通过stdin隐藏JAVA命令行程序参数

如何通过stdin隐藏JAVA命令行程序参数

作者: Magic05 | 来源:发表于2019-11-04 14:49 被阅读0次

在之前的项目中遇到一个特殊的需求:在linux平台上,通过命令行启动的JAVA应用程序需要读取用户名,密码等敏感信息。但是,这些信息确可以通过ps命令简单的查看到,因此需要找到一种方案能够隐藏掉这些命令行读入的敏感信息。

考虑过使用openssl将密码明文进行加密,但这种方案在于,Java应用程序仍然需要持有解密的KEY,从而引入了新的问题:如何有效,安全的分配,管理KEY。

目前找到一种有效且简单的方式,就是利用linux重定向的优势,将敏感信息作为stdin传给JAVA应用程序。

那么,图片非常清晰的显示了,通过PS命令不能看到接收输入的参数,达到了我们想要隐藏参数的目的。

来看例子:

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Test {

public static void main(String args[]){
    try {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String test = br.readLine();
        System.out.println(test);
        Thread.sleep(100000);
    } catch (Exception e) {
        //TODO: handle exception
    }
}

}

编译运行:

image.png

查看进程信息:


image.png

相关文章

  • 如何通过stdin隐藏JAVA命令行程序参数

    在之前的项目中遇到一个特殊的需求:在linux平台上,通过命令行启动的JAVA应用程序需要读取用户名,密码等敏感信...

  • 标准输入输出

    标准输入是程序从命令行接受参数,标准的shell命令行会打开三个标准文件,stdin-标准输入 stdout-标准...

  • 命令行参数和可变参数

    命令行参数 String[] args 数组 通过执行 java 运行配置传递参数: java HelloWorl...

  • 命令行参数解析(c编程)

    该文主要介绍c语言通过命令行方式输入参数,程序如何获取并解析参数。例如:./a.out -a red -b blu...

  • pflag命令行参数

    简介 本文讲解如何在go程序中使用命令行参数包pflag来获取gong语言编写的命令行程序的传入参数。 命令行参数...

  • go如何编写命令行(cli)程序

    创建一个命令行程序 问题 如何使用golang创建可以在命令行当中传递参数的程序?go如何带参数执行程序?比如我们...

  • Linux:xargs命令

    有些命令只能以命令行参数的形式接受数据,无法通过stdin接受数据流,此时采用命令xargs,将标准输入数据转换成...

  • TensorFlow学习笔记:Retrain Inception

    5. 代码改写 通过阅读源码可以发现,程序的超参数都是通过命令行传入,当然,每个命令行参数都含有默认值。如果我们想...

  • xargs 命令说明

    xargs命令应该紧跟在管道操作符之后。它以标准输入作为主要的源数据流,并使用stdin并通过提供命令行参数来执行...

  • flag

    编写命令行程序时会使用不同的启动参数(命令行参数)来控制程序的行为 Go编写命令行程序时,获取并解析命令行参数的方...

网友评论

      本文标题:如何通过stdin隐藏JAVA命令行程序参数

      本文链接:https://www.haomeiwen.com/subject/ppkdbctx.html