我想在我的linux命令行上调用“openssl”来获取一些解密内容。
使用时
Process process = new ProcessBuilder().command("openssl", "enc", ...).start();
我怎么能确定实际的openssl命令被调用?想象一个攻击者简单地重命名openssl - > openssl2并将他自己的邪恶程序添加为“openssl”,后者又在后台调用“openssl2”但捕获stdin和stdout并将其静默地转储到一个秘密文件中。
有没有办法确定,是否调用了正确的操作系统程序?
谢谢大家!
OpenSSL和JNI
这样您就可以使用自己的库示例。当然,如果系统受到损害,它仍然不安全,但这样可以保持完好无损的机会
如果您确实需要使用openssl功能,可以采用以下方式:1。转到此处:https://www.openssl.org/source/ 2.为所需(或多个平台)编译openssl库。 3.使用JNI从库中调用函数。
你也可以在这里找到有用的东西:https://software.intel.com/en-us/blogs/2014/12/05/encryptiondecryption-invoking-openssl-through-jni-calls