这似乎是一个非常广泛的问题,但任何帮助表示赞赏。
我有一个用 java 编写的客户端/服务器解决方案,它使用 Cajo 项目(使用 RMI)。考虑到将在服务器和客户端之间传输的敏感数据,我只想尝试使我的解决方案尽可能安全。
到目前为止,我的想法是让我的所有类都“最终”,并为服务器中的所有类抛出“不可序列化”异常(RMI 注册表中绑定的对象以及实际需要的任何对象除外)当然要转移)。
谁能想到其他的想法?
我知道有人可能会编写恶意客户端——这并不难,因为您可以使用反射找出远程对象的 API。但是,我能做些什么来保护他们不应该访问的服务器中的恶意客户端访问类/对象吗?
非常感谢
更新: 感谢大家提供的有用提示,很抱歉花了这么长时间才回复您。我目前的思路是建立一个安全的系统:
- 在客户端和服务器之间使用 OpenVPN。这意味着您需要访问物理客户端才能获得访问权限。(注意由于下面的2点,VPN实际上会在服务器和办公室局域网之间。我觉得这样已经足够安全了)
- 使用用户名和密码(可能使用 JBOSS)在服务器和客户端之间进行身份验证。这意味着要在服务器上完成任何事情,攻击者都需要用户名和密码。
- 为所有对象抛出一个“不可序列化”异常,除了那些实际上应该通过网络发送的对象。这会阻止敏感对象通过网络发送。
这听起来公平吗?如果我遗漏任何东西,请纠正我。
进一步更新:似乎我试图阻止的事情似乎有些混乱。我试图阻止的是有人“入侵”服务器。因此,例如,基本上是利用服务器转储/删除其整个数据库。
谢谢