确保Java代理的安全

我目前正在处理一个遗留的应用程序,其中数据库调用有点分散。我需要在每次执行某种DML时执行一些与安全(业务)相关的逻辑,为此,我想使用一个java代理并拦截调用,然后执行业务逻辑。问题是这个代理需要是安全的,我需要确保没有办法加载一个类似但不同逻辑的不同代理。

解决方案:

在应用程序和java代理之间是否有任何形式的相互认证,以确保错误的代理无法被加载。

没有。应用程序几乎不知道代理的情况。 当然,应用程序也没有办法正确地验证代理。

我想,你可以设计一个 “协议”,只有当代理以特定的方式调用特定的应用方法时,应用程序才会工作。 然而,这可以通过对应用程序或真实的代理进行逆向工程来规避,并使用这些知识来编写一个模仿所需行为的坏代理。


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

(我的反应是,你很可能在代理上花费更多的精力,而不是通过不修改遗留应用程序来节省。 而且结果会更难维护。)

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

如果我在做这件事,而且我如此关心如何防止(内部人员)试图颠覆业务规则的行为,我会。

  1. 选择一个替代机制
  2. 按要求实现新代码和对原有应用的修改。
  3. 审核主应用程序和拦截器逻辑
  4. 将两个部件连接在一起(根据机构的工作方式)。
  5. 把组合系统放到一个安全的机器或容器上。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

如何解决随机行走问题中的这段代码?[关闭]

2022-4-21 7:00:13

解决方案

std::complex<double>其他类型的乘法。

2022-4-21 7:00:15

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索