gpt4 book ai didi

java - 保护 Java 代理

转载 作者:行者123 更新时间:2023-12-02 08:41:24 26 4
gpt4 key购买 nike

我目前正在开发一个遗留应用程序,其中数据库调用有点分散。每次执行某种 DML 时,我都需要执行一些与安全(业务)相关的逻辑。为此,我正在考虑使用 java 代理并拦截调用并随后执行业务逻辑。问题是这个代理需要受到保护,我需要确保无法加载使用相似但不同逻辑开发的不同代理。应用程序和 java 代理之间是否可以进行任何类型的相互身份验证,以确保无法加载错误的代理

最佳答案

Is there any kind of mutual authentication possible between the application and the java agent which would ensure that a wrong agent is in no way able to be loaded.

没有。应用程序(几乎)不了解代理。当然,应用程序无法正确验证代理。

我想,您可以设计一个“协议(protocol)”,其中应用程序仅在代理以特定方式调用特定应用程序方法时才起作用。然而,可以通过对应用程序或真实代理进行逆向工程,并利用这些知识编写一个模仿所需行为的不良代理来规避这一点。

<小时/>

但我认为您的处理方式是错误的。有许多更好(更简单、更干净、更高效)的方法可以将行为注入(inject)到 Java 应用程序中。我想我可以检测到您的部分动机是您希望尽可能少地修改遗留应用程序。这就是复杂的基于代理的方法的主要动机。

(我对此的 react 是,与不修改遗留应用程序所节省的精力相比,您在代理方面可能会花费更多的精力。结果将更难维护。)

我还怀疑您对应用程序和拦截器的相互身份验证的要求(无论它们是如何实现的)并不是真正必要的。这是使用代理的结果,而不是基本要求。

如果我正在这样做并且我非常担心防止(内部)试图颠覆业务规则,我会:

  1. 选择替代机制
  2. 根据需要实现新代码并对旧应用进行修改。
  3. 审核主应用程序和拦截器逻辑
  4. 将两个部分连接在一起(取决于机制的工作方式)
  5. 将组合系统放置在安全的机器或容器上。

关于java - 保护 Java 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61370262/

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