我正在编写一个服务器 - 客户端应用程序,通过互联网进行通信,我有几个关于安全性的问题和疑虑。我已经做了一些研究,发现一些有用的帖子,但我想了解更多信息。我读了一些相关的问题是:编写安全的RMI服务器 - 客户端应用程序
Secure authentication of client over RMI
java rmi authentication & security. exportObject makes it public?
Is communication in java rmi secure?
我有3个部分来考虑:
- 信息在客户端和服务器之间交换。
- 客户端的身份验证。
- 利用正在运行的RMI服务器(黑客等)。
我所知道的:
- 基于SSL的RMI。使用SSL套接字而不是默认套接字将加密在客户端和服务器之间传递的所有信息。这包括对象交换和方法调用。
- 在建立RMI连接之前使用SSL上的用户名/密码组合进行身份验证。根据我的理解,应该有一种在RMI连接内进行身份验证的方法,但它被拒绝了。
- 不太确定这里可以做什么或需要做什么。我知道你不能只编写你自己的客户端,并要求连接到服务器,因为你需要一个ObjectID和远程接口。但是,是否无法反编译您所需的类\接口,因为它们是以RMI方式发送的?我也在研究中看到了这个Youtube视频[http://www.youtube.com/watch?v=otjllNaBxiw],它让我担心它的容易程度,尽管我不知道服务器是否安装不正确。
总而言之,我还需要在RMI上通过互联网考虑其他安全问题吗?我是否缺少我需要看的解决方案?我已经知道错了吗?
您可以使用应用程序服务器和应用程序客户端吗?它们之间的连接使用RMI-IIOP,您可以利用服务器安全性。在服务器上,您可以访问EJB以进行数据访问。 – onesixtyfourth
@onesixtyfourth阅读[文档](http://docs.oracle.com/javase/7/docs/technotes/guides/rmi-iiop/rmiiiopUsing.html)在我看来,RMI-IIOP只需要部分的整体应用程序不是用Java写的,事实并非如此。无论如何,这将如何解决担忧? – user1803551