【问题标题】:Java - hack or modify public variable in object via applicationJava - 通过应用程序破解或修改对象中的公共变量
【发布时间】:2021-02-09 08:38:42
【问题描述】:

我正在通过 Spring 开发应用程序。

我想问有没有可能有人能够通过任何注入或黑客攻击来更改 Object 中公共变量的值?

我有一个类似这样的 Object 类:

public class ObjectA {
    public String key;

    public String getKey() {
        return key;
    }

    public void setKey(String key) {
        this.key = key;
    }

}

【问题讨论】:

  • 这里的key不是公共变量。
  • 抱歉,Prashant,我已将其编辑为“公共字符串密钥;”。这个场景怎么样?
  • “任何注入或黑客行为”是什么意思?

标签: java spring oop public


【解决方案1】:

为什么他们首先需要这样做?有一个setter方法。

【讨论】:

  • 嗨 Matt Crysler,我只是想知道这种情况下的公共变量是如何暴露攻击者攻击的弱点的。我能知道你提到的更甜的方法是什么吗?
  • 一般来说,如果你有一个getter和setter,那么你的变量应该是私有的。这本质上是面向对象设计的基本原则之一,称为封装。这是一篇关于封装的有用文章:google.com/amp/s/www.geeksforgeeks.org/encapsulation-in-java/…
【解决方案2】:

无权访问系统的攻击者可以利用漏洞、弱密码、错误配置或未受保护的端口来访问系统。

具有系统访问权限的攻击者可以使用权限提升方法来操纵系统授予他/她额外的权限。

在系统上拥有足够权限的攻击者始终可以访问和操作内存内容,无论这些变量是声明为私有的还是公有的。

对系统具有物理访问权限的攻击者始终可以打开计算机并将探针连接到主板上的信号,以绕过软件中实现的任何访问控制。

唯一的“安全”数据是 (a) 静态数据并使用强加密进行加密,或者 (b) 存储在硬件安全模块 (HSM) 中,这些模块经过物理密封并设计成数据永远不会发送在密封芯片之外。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 2018-08-25
    相关资源
    最近更新 更多