我需要保护我的主要java应用程序和MYSQL服务器之间的连接。现在,我在我的主要java应用程序中有一个类,其中包含有关我的SQL服务器的信息(登录详细信息;用户、密码、模式等)。
我试着混淆那个类,但没有成功。然后我听到一些关于用连接信息调用外部java应用程序,并安全地检索该信息的事情。
我怎么能执行这样的事情呢?
发布于 2013-08-02 06:20:27
Runtime run;
Process pr = null;
run = Runtime.getRuntime();
pr = run.exec("your program.jar");
pr.getInputStream().close();
InputStream eos = pr.getErrorStream();您可以使用文件将信息传递给jar应用程序
发布于 2013-08-02 08:16:31
在处理客户机/服务器样式的应用程序时,所有的业务逻辑,包括持久层,都应该在服务器端进行维护。
也就是说,客户端连接到某个服务器进程并发出请求。它永远不应该关心数据是如何管理或存储的。它只关心数据的获取和操作。这也意味着您集中了与该数据相关联的业务,这意味着如果数据发生更改,您不太可能需要更改客户端。
这也意味着数据库的所有访问信息永远不会离开服务器的域。
现在的问题是,你如何实现。这个答案将确切地归结为你想要实现什么,以及你想要实现它的方式,但是,我还想补充说,客户端应该首先通过服务器的身份验证,这意味着为了能够访问数据,必须让用户输入用户名和密码(除非它是一个公共的可访问的API,然后你可能并不关心)。
你可以使用
RMI。这将允许您公开客户端可以与之交互的服务器对象。如果您希望将对象从服务器发送到客户端,这是很好的选择。它允许客户端与Java对象交互,就好像它们是本地对象一样。
从编码的角度来看,这是一个(相对)简单的解决方案,因为您正在处理Java对象。但问题是,只有Java客户端(具有正确的库)才能访问服务器。
你可以使用
普通Sockets。这将允许您连接到服务器上的服务并与其通信。
您甚至可以在客户端和服务器之间序列化对象,允许应用程序处理Java对象。
这也是一种困难得多的方法,因为您将负责处理低级协议和错误处理( RMI会为您处理这些问题)。
然而,这种方法确实为您提供了其他客户机连接到您的服务器的机会(只要您只使用普通套接字和序列化对象;)。
这是很多工作..。
你可以使用
某种web服务(例如Tomcat下的Servlet或J2EE服务器的事件),它将使用简单的HTTP请求来列出可用服务/函数,这些服务/函数将返回客户端随后需要解析的诸如JSON或XML响应。
到目前为止,这是最开放的,也可能是最常见的解决方案。它需要一些工作才能运行,但比使用套接字要少得多,而且也是最灵活的,因为你不需要每次想要更改或更新服务时都不释放任何库。
现在,所有这些都允许您通过SSL通过网络提供安全连接,您只需要建立从客户端到服务器的正确连接,因此您已经获得了额外的安全级别。
每种方法都将数据库访问隐藏在服务器层之后,从而为数据库增加了额外的保护。
https://stackoverflow.com/questions/18005190
复制相似问题