gpt4 book ai didi

java - 面向对象的安全编程

转载 作者:行者123 更新时间:2023-12-02 01:36:52 25 4
gpt4 key购买 nike

在 OOP 中,我们可以为变量和方法分配 private、protected 和 public。我知道这有很多优点,但安全性是其中之一吗?因此未经授权的人不得访问。

最佳答案

简短的回答是“不是真的”。数据仍然在内存中,如果你用反射挖掘,你可以获得字段的内容。将字段和方法标记为私有(private)是与其他程序员沟通的一种方式:“嘿,这是类的内部工作,它很容易发生变化,请不要碰它。”

您可以通过以下方式获取私有(private)字段的值:

// suppose we have a class
Person person = new Person("John");
// Field is from java.lang.reflect.Field
Field nameField = Person.class.getDeclaredField("name");
// tell Java to ignore the private modifier
nameField.setAccessible(true);
// now you can "steal" the private field
System.out.println(nameField.get(person));

除非绝对必要,否则请不要使用这是您的代码,如果您使用反射,请格外小心。

此外,即使语言设计无法访问该字段,如果我们谈论安全性,就像外部程序扫描内存一样,将字段标记为私有(private)也不会隐藏其中的数据。毕竟..数据必须位于某个地方,对吧?

关于java - 面向对象的安全编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55113508/

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