OOP 封装 - 它提供完整的数据保护吗?

问题描述 投票:0回答:1

Coursera:在处理安全数据或方法时可以使用封装,因为它可以限制哪些功能或用户有权访问某些信息。

这意味着封装可以保护/隐藏开发人员的类对象的私有数据。

我的问题是:
1-封装是否提供完整的数据隐藏?为什么?
2- 有没有办法(直接或间接) 来查看和编辑该数据?


找到这篇文章:封装与数据安全

封装与外部黑客无关,这不是数据安全概念,更多的是编程模型。

但他没有解释为什么这与外部黑客无关。

oop security encapsulation
1个回答
0
投票

假设您正在编写一个名为 Car 的 Java 类。 这个类可以有一组属性。这些属性可以是可变的,也可以是不可更改的。这是第一个可以帮助您理解为什么 OOP 封装不是安全概念而是逻辑概念的概念:确定类中的属性是否可以由外部用户更改的唯一因素是对象的逻辑您正在建模的现实世界。想象一下,您的类被 100 个开发人员使用,您可以想象将某些属性设置为私有,将其他属性设置为最终。可以合乎逻辑地想象,轮子的数量是私人的且最终的:

  • 私有,因为它只属于该类
  • 最后,因为汽车的车轮数量在世界各地不太可能发生变化。

因此将变量定义为 private 和 filan 使其无法从外部更改。您不能重新分配签名为 final 的变量。

另一方面,当您将变量标记为变量时,您就明确了控制如何访问该变量的逻辑要求,基本上使用常用的 getset 方法。 现在,如果您以最简单的方式思考这一点,当 get 只是返回值,而 set 只是重新分配变量时,您可以看到黑客无法通过知道签名的恶意值注入该变量。您可以做的是在重新分配私有变量之前检查传递给 set 方法的值。可以说,此时您已实施了安全策略。

我希望很清楚,将变量签名为私有是一个逻辑选择,而不是安全选择。

© www.soinside.com 2019 - 2024. All rights reserved.