我想在我的Linux命令行上调用“ openssl”以获取一些解密信息。
使用时
Process process = new ProcessBuilder().command("openssl", "enc", ...).start();
如何确定实际的openssl命令已调用? 想象一下,一个攻击者只是简单地重命名了openssl-> openssl2并将其自己的邪恶程序添加为“ openssl”,而该程序又在后台调用了“ openssl2”,但是捕获了stdin和stdout并悄悄地将其转储到一个秘密文件中。
有什么办法可以确保调用正确的OS程序?
谢谢!
答案 0 :(得分:0)
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