gpt4 book ai didi

Java EE 安全 - 应用程序客户端

转载 作者:行者123 更新时间:2023-12-01 16:12:21 24 4
gpt4 key购买 nike

我正在编写一个 Java EE 项目,该项目将包含来自 3-6 个不同客户端的所有内容。该项目是开源的,我想知道可以/应该使用什么安全机制。问题是:因为它是开源的,所以我相信任何拥有用户的人都可以编写自己的客户端(也许不现实,但确实可能)并与服务器/数据库进行联系。我尝试过以不同角色的身份向数据库读取/写入不同数据的所有场景,我的结论是我必须拥有比这更高级别的安全机制(它不是 足以检查该帐户类型是否允许使用该 ID 持久保存该实体等等...)。在某种程度上,我必须知道进行联系的客户是我写的正确客户。对 Jar 文件进行签名可以解决整个问题吗?还是有其他方法可以做到这一点?

-Yngve

最佳答案

我真的认为,如果限制服务器端的可用 Activity (基于角色)还不够,那么您就会遇到更大的问题。即使用户不编写自己的客户端,无论您使用什么机制进行远程调用,都可能容易被拦截和操纵。最重要的是,您应该限制可能对服务器进行的调用,并且应该将对服务器的每个调用视为潜在的恶意调用。

您能否想出一个示例场景,其中允许特定的经过身份验证的用户执行服务器操作,如果他们使用您的客户端,那么该操作会很好,但如果他们不使用您的客户端,则很危险?如果是这样,我认为您过于依赖客户。

但是,我不仅仅是批评,还想尝试为您的问题提供一些实际的答案。如果您想象的是一个恶意用户,我认为签署您的 jar 文件就足够了;一般来说,公钥加密技术可能对您没有多大帮助,因为对您的源进行逆向工程的假设恶意用户将有权访问您的公钥,因此可以欺骗您构建的任何身份验证。

最终,系统中必须有一个您信任的人,因此您必须弄清楚那个人是谁,并将您的安全建立在他们的基础上。例如,让我们想象一下,某家特定公司可能有许多您不一定信任的用户,而您确实信任一位负责监督他们的管理员。在这种情况下,您可以设置客户端,以便管理员必须在启动时输入特殊代码,并将该代码保留在内存中并与任何请求一起传递。这样,即使用户对您的代码进行逆向工程,他们也不会拥有管理代码。当然,从客户端到服务器的调用仍然容易被拦截和操纵(更不用说这个要求对您的用户来说是一个巨大的痛苦)。

底线:如果您的用户的计算机正在调用您的服务器,那么您的用户正在调用您的服务器。不要相信你的用户。限制他们可以做的事情,无论他们使用什么客户端。

关于Java EE 安全 - 应用程序客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/605589/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com