代码之家  ›  专栏  ›  技术社区  ›  Ritwik Bose

Java中唯一调用方信息的提取

  •  0
  • Ritwik Bose  · 技术社区  · 15 年前

    我要做的是实现一些基本的安全性,不仅要检查哪个类调用了特定的方法,还要检查那个类的哪个实例。

    我试过

    StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace();

    但那显然只给了我类名。允许/要求呼叫者发送自己或个人ID的问题是,所有呼叫者都必须访问所有其他人的详细信息。有人能帮忙吗?

    编辑:更多信息:

    所以我们有一个服务器,它与几个代理建立连接。代理发送包含其声称拥有的名称的信息包。有一个特别的代理人决定人们是否应该能够在每一个特定的案件中撒谎。

    代理与服务器上代理类的实例建立连接,但也有可能某些代理将以本机方式运行。我对这种方法感兴趣的原因是我以后需要这种技术(提取调用给定方法的特定实例)

    我希望这是更好的,很抱歉之前没有放足够的信息:/

    3 回复  |  直到 15 年前
        1
  •  4
  •   bmargulies    15 年前

    这一系列的攻击无法确保任何东西的安全。如果用户可以控制运行的代码,那么他们只需运行codegen库并编辑您的代码。如果用户不能控制代码,那么这是不必要的。

    如果你无法抗拒这种冲动,一种方法是用代理来包装所有东西,以传达你需要的信息。

    我的意思是,我的代理人 java.lang.reflect.Proxy . 也就是说,将这些对象中的每一个都包装在代理中。代理的工作是存储 this 一堆你自己的,被叫方可以咨询。

    这本质上是aop(面向方面编程)的重新发明,所以您可能想了解一下。看看spring框架。

        2
  •  1
  •   Suraj Chandran    15 年前

    你没有得到这样的东西。

    我认为对于这样的问题,只需检查所有贡献的代码都来自签名的jar。

        3
  •  0
  •   Laurence Gonsalves    15 年前

    仰望 Capability-based security . 与其知道哪个客户机在做什么,不如给每个客户机单独的功能对象(本质上是具有不同权限的代理对象)。