Java领域和安全请求

时间:2013-03-17 10:30:35

标签: java security realm

我正在开发一个拥有独立和孤立宇宙的游戏(对于那些了解这个游戏的人来说,就像ogame一样)。一个玩家(帐户)与一个宇宙相关联,但一个玩家(物理)可以为每个宇宙创建一个帐户。

因此玩家可以登录多个宇宙并在玩游戏时切换宇宙。

为此,我创建了Authentication类,其中存储了id已记录的播放器和Universe名称(这是我的PostgreSQL数据库中的模式名称)。

因此,Authentication对象表示已记录的播放器。为了管理应用程序角色,我使用一个自定义域,它只收集id和Universe名称(来自我的Authentication对象)来处理SQL请求并获取组名以将其转换为角色。

所有这些机制都很好。

我想知道这样做真的有用吗?攻击者是否可以向我的领域发送请求并在其请求中注入id和Universe名称以直接处理身份验证?因为我的领域既不需要密码也不需要用户名(在我的应用程序之前处理以创建Authentication对象),这样的恶意请求可能会起作用。

所以我的问题只是要知道我的领域的请求是否可以在我的Java应用程序(或我的Glassfish服务器)之外进行?

1 个答案:

答案 0 :(得分:1)

假设请求发生在应用程序之外,并且源自客户端,那么如果您不验证用户名/密码,则可能有人可能会在您的应用程序之外发出请求并违反您的安全性。您应该在提交领域/ Universe时要求提交用户名/密码,并在那时验证用户是否有权获得他们正在进行的请求。不要只是确保用户名/密码有效,而是确认它们是为他们登录的Universe以及他们尝试访问的领域/角色注册的。如果你不需要这个,你可以打开自己的攻击。<​​/ p>

Firefox和Firebug很不错,但它没有向您显示原始请求。要真正查看请求和发生的事情,您应该使用像Wireshark这样的数据包嗅探器。如果你能在那里看到请求,那么你很容易受到攻击。还要确保用户名/密码是加密的,并且无法以纯文本形式查看,否则攻击者可以通过嗅探线来提取用户的凭据。

如果所有处理都发生在服务器端并且没有客户端请求发起(并且您在客户端的Wireshark中看不到任何内容),那么您可能是安全的。