2013-03-17 69 views
2

我正在开发一个具有分离和孤立Universe的游戏(就像那些知道这个游戏的玩家)。一个玩家(账户)与一个宇宙相关联,但一个玩家(物理)可以为每个宇宙创建一个账户。Java领域和安全请求

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

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

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

所有这些机制都很好。

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

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

+0

使用Firefox和Firebug,我们看不到发送到我的领域的请求。这是否意味着没有人能够看到如何将信息发送到我的领域来处理认证? Ty – 2013-03-17 12:18:29

回答

1

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

Firefox和Firebug很好,但它不会显示原始请求。要真正看到请求和发生了什么,你应该使用一个包嗅探器,如Wireshark。如果你可以在那里看到请求,那么你很脆弱。还要确保用户名/密码已加密并且不能以纯文本形式查看,否则攻击者可能通过嗅探导线来提取用户的凭证。

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

+0

我知道这可能是对用户进行身份验证的一种“奇怪”方式,但我的目的是允许用户在相同时间连接多个帐户,因此,通过下拉列表可以切换帐户,而无需再次注销/登录。我将使用Wireshark作为通知包进行检查,如果我有任何疑问,我会重构我的代码。谢谢 – 2013-03-17 18:05:22