Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加帐户登录+;Java程序的HWID锁?_Java_Mysql - Fatal编程技术网

添加帐户登录+;Java程序的HWID锁?

添加帐户登录+;Java程序的HWID锁?,java,mysql,Java,Mysql,因此,我有一个Java程序,目前只在windows控制台中运行。当程序第一次启动时,我想让它通过带有用户名和密码的登录提示。我以前使用过MySQL数据库来检查用户名+密码组合是否存在,然后允许该用户登录。当我将密码与数据库信息进行比较时,我知道如何加密密码等。但是,当我这样做时,MySQL登录详细信息留在代码中,以便程序可以连接到数据库。这就留下了一个巨大的问题,有人可以反编译程序,找到那些登录详细信息,然后使用它们访问数据库 所以我的问题是,有没有一种方法可以使用该程序访问这些登录,而不必向窥

因此,我有一个Java程序,目前只在windows控制台中运行。当程序第一次启动时,我想让它通过带有用户名和密码的登录提示。我以前使用过MySQL数据库来检查用户名+密码组合是否存在,然后允许该用户登录。当我将密码与数据库信息进行比较时,我知道如何加密密码等。但是,当我这样做时,MySQL登录详细信息留在代码中,以便程序可以连接到数据库。这就留下了一个巨大的问题,有人可以反编译程序,找到那些登录详细信息,然后使用它们访问数据库


所以我的问题是,有没有一种方法可以使用该程序访问这些登录,而不必向窥探者透露我的数据库详细信息。有没有一个库可以做到这一点?

如果您提供db访问权限,请处理该选择的副作用。我认为mysql提供了某种行级安全选项。检查文档


如果您想要某种程度的后端混淆,那么通过REST或其他方案将其放在用户和后端之间。

是的,您可以这样做,但您需要重新构建应用程序。 你应该把你的申请分为两个不同的申请。(简而言之,你还有很长的路要走)

1-客户端应用程序:Java应用程序与最终用户交互的地方

2-服务器应用程序:应用程序与数据库交互的位置。此应用程序可以通过您的网络与您的客户机对话

注意:请记住,客户端的任何应用程序都可以反编译。可以监控所有流量,甚至客户端与服务器之间的任何通信。

有很多方法可以实现服务器和客户端之间的通信。选择权在你,你可以自己做一个(套接字通信)或遵循一些标准,如REST或SOAP

如果您想使用REST或SOAP,有许多现成的框架和库可用,就是其中之一。因为您需要服务器应用程序(例如:Rest-Server),所以您需要在容器中运行服务器应用程序,在本例中,是JAVA世界中最著名的一个

但是有更好的开始方式;您可以为您的服务器应用程序制作一个应用程序。大多数库甚至容器都已经嵌入,您只需要关注应用程序逻辑。一旦完成,您只需要运行一个jar文件,您的客户机就可以通过网络开始与服务器应用程序对话。缺点是您需要遵循spring boot标准

您还可以通过(这是完全不同的主题)来保护Rest API,但您可以将其简化为在服务器客户端之间为每个Rest调用进行令牌交换

所以在这个场景中,假设有人反编译您的客户端应用程序,他将
只看到一些RESTAPI链接,没有登录和令牌就无法工作


请注意,您还需要通过(这是完全不同的主题)

确保服务器和客户端之间的通信安全。我认为在这种情况下,REST将是更好的方法。我们在遵守我们最熟悉的约定时编写最好的代码。