我正在开发一个简单的 java 程序,它接收用户输入,然后解析数据并将其上传到 sql 数据库以在线存储。
在我的 JDBC 代码中,我有以下内容:(小示例)
public class JDBCExample {
// JDBC driver name and database URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost/";
// Database credentials
static final String USER = "username";
static final String PASS = "password";
我想知道在我将用户名和密码转换为 jar 文件后,在我的编程代码中以纯文本形式公开用户名和密码有多安全。对这样的应用程序进行逆向工程并揭示代码是否容易?
最佳答案
非常简单,是的。 javap -c JDBCExample.class
将立即完成。
通常,实现这一点的方法是将您公开分发的客户端应用程序与在受信任服务器上运行的服务器端应用程序分开。您分发的客户端应用程序不直接访问数据库;相反,它与服务器程序对话,服务器程序发布一个 API(通常是基于 HTTP 的 RESTful API),客户端可以通过该 API 发出请求。受信任的服务器端程序直接与数据库对话。
即便如此,最好不要将您的凭据硬编码到服务器端代码中。相反,让服务从您与代码库分开的文件中读取这些凭据(例如,不要将该文件 checkin 源代码管理)。
关于将用户添加到数据库中的 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22470684/