2

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

所以玩家可以在玩的时候登录多个宇宙并切换宇宙。

为此,我创建了Authentication存储id记录的玩家和宇宙名称(这是我的 PostgreSQL 数据库中的模式名称)的类。

所以,一个Authentication对象代表一个登录的玩家。为了管理应用程序角色,我使用了一个自定义领域,它只收集id和宇宙名称(来自我的Authentication对象)来处理 SQL 请求并获取组名以将其转换为角色。

所有这些机制都可以正常工作。

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

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

4

1 回答 1

1

假设请求发生在应用程序之外,并且来自客户端,那么如果您不验证用户名/密码,那么有人可能会在您的应用程序之外发出请求并侵犯您的安全性。您应该在提交领域/宇宙时要求提交用户名/密码,并在那时验证用户是否有权执行他们提出的请求。不仅要确保用户名/密码有效,还要验证他们是否已为他们正在登录的 Universe 以及他们尝试访问的领域/角色进行了注册。如果你不需要这个,你就会为攻击敞开心扉。

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

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

于 2013-03-17T15:21:14.550 回答