文档章节

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

pigdonkey
 pigdonkey
发布于 2017/07/14 22:10
字数 298
阅读 159
收藏 0

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

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

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

来看例子:

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
        }
    }

}

编译运行:

查看进程信息:

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

© 著作权归作者所有

pigdonkey

pigdonkey

粉丝 3
博文 3
码字总数 1153
作品 0
成都
程序员
私信 提问
Exec Maven Plugin全面解析和使用示例

1.为什么使用exec? 现在的工程往往依赖众多的jar包,不像war包工程,对于那些打包成jar包形式的本地java应用来说,通过java命令启动将会是一件极为繁琐的事情,原因很简单,太多的依赖让参数...

劲风online
2015/03/31
6K
0
如何在 Java 中运行子进程

(给ImportNew加星标,提高Java技能) 编译:ImportNew/唐尤华 dzone.com/articles/running-a-java-class-as-a-subprocess 本文介绍了如何在 Java 中运行子进程(非 jar)。确切地说,要求从...

ImportNew
06/24
0
0
关于 Java 性能监控您不知道的 5 件事

当应用程序性能受到损害时,大多数开发人员都惊慌失措,这在情理之中。跟踪 Java 应用程序瓶颈来源一直以来都是很麻烦的,因为 Java 虚拟机有黑盒效应,而且 Java 平台分析工具一贯就有缺陷。...

红薯
2010/08/22
895
5
JVM系列第12讲:JVM参数之查看JVM参数

今天要说的是如何查看 JVM 中已经设置的参数,包括显示参数和隐式参数。 打印显式参数 -XX:+PrintVMOptions 该参数表示程序运行时,打印虚拟机接受到的命令行显式参数。我们用下面的命令运行...

陈树义
2018/12/10
0
0
JAXB 应用指南

文章转自:http://blog.csdn.net/darxin/article/details/4845820 JAXB(Java Architecture for XML Binding)是一种特殊的序列化/反序列化工具。它可以使XML数据以Java Objects的形式直接应...

红薯
2011/08/06
4.7K
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring Cloud 笔记之Spring cloud config client

观察者模式它的数据的变化是被动的。 观察者模式在java中的实现: package com.hxq.springcloud.springcloudconfigclient;import org.springframework.context.ApplicationListener;i...

xiaoxiao_go
今天
4
0
CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
今天
4
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
今天
7
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
今天
7
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部