不使用“final”怎么会成为安全问题呢?

2024-01-01

摘自 O'Reilly's 第 113 页基本 ActionScript 3.0 (2007):

最终方法有助于隐藏类的内部细节。制作一个类或一个 方法final阻止其他程序员扩展类或重写 用于检查类内部结构的方法。这样的预防 被认为是方法之一保护应用程序不被 被恶意利用.

这是指使用已编译、闭源包的 API 并“恶意利用”来学习有关类设计的内容的用户吗?这真的是个问题吗?

对于更多上下文,这是使用的两个原因中的第二个final。在2007年版中,它位于章节的第113页遗产在副标题下防止类被扩展和方法被覆盖.

在 ActionScript 中使用 Final 属性有两个原因:

  • 在某些情况下,最终方法比非最终方法执行得更快。如果你 正在寻求以各种可能的方式提高应用程序的性能,请尝试 使其方法最终确定。但请注意,在未来的 Flash 运行时中,Adobe 期望非最终方法与最终方法一样快地执行。

  • 最终方法有助于隐藏类的内部细节。制作一个类或一个 方法final阻止其他程序员扩展类或重写 用于检查类内部结构的方法。这样的预防 被认为是保护应用程序免遭攻击的方法之一 被恶意利用。


在许多语言中,重写方法是从基类中选择加入的。通常,它是virtual关键字允许基类作者选择覆盖的可能性。

然而,在 AS3 中,重写方法的能力是选择退出的。这就是final关键字确实如此。它允许基类作者说“这个方法可能不会被重写”。

有一些关于封装的老派想法表明 AS3 这样做会带来安全问题。但这主要是在公共 API 的情况下,您希望隐藏内容但公开功能。

但是,在更现代的时代,我们了解到反汇编和反射将允许恶意开发人员做任何他/她想做的事情,所以今天这不再是一个问题。依靠final在我看来,安全是一个拐杖,任何有关它的建议都应该被驳回。安全性需要比这更仔细地考虑。 API 需要进行架构设计,以便开发人员可以执行需要执行的操作,但安全关键信息不应包含在公共 API 中。

这并不是说final没有用。final告诉从您的类派生的开发人员您从未打算让他们重写该函数。它让你说“请只调用这个函数。不要覆盖。”在我看来,它更像是一种接口或通信机制。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不使用“final”怎么会成为安全问题呢? 的相关文章

  • 我应该如何使用 Perl URI 类?

    我需要在 Perl 程序中处理一些 HTTP URL 但我怀疑应该如何处理URI https metacpan org module URI类帮助我 特别是 我想使用URI用于解析相对 URL 并获取其组件的类 然而 问题是 我需要一个可以
  • AS3 是否可以复制 Shape 对象?

    我正在尝试制作一个可用于复制的形状 这是我所做的 我正在尝试做的以及我陷入困境的解释 在 Flash IDE 画笔 中手动绘制形状 创建了一个包含形状的新影片剪辑 作为一个类导出 实例化该类 var mc MovieClip new sha
  • 如何将一个窗格连接到另一个窗格

    如何将输出连接到paneWithList PaneWithList其上有一个监听器JList以便将所选行输出到控制台 我怎样才能将该输出定向到JTextPane关于输出 Could PaneWithList触发一个事件Main拿起 会属性更
  • 求反射角的弧度

    我正在编写一个简单的 Flash 游戏 只是为了学习 Flash 并提高我的数学能力 但我对弧度感到非常困惑 因为这对我来说是新的 到目前为止 我所做的是使用鼠标 单击并释放 使用弧度向该方向射出一个球 现在我想要发生的是 当球撞到墙壁时
  • 初始化父类时如何返回子类的新实例?

    给定一个类层次结构如下 class A def initialize param if param 1 then initialize and return instance of B else initialize and return
  • 用于生成 C++ 代码轮廓/图的工具 - 有这样的东西吗? [复制]

    这个问题在这里已经有答案了 我需要深入研究用 C 编写的软件组件并对其进行一些修改 我幻想生成一些代码映射 它将显示类之间的关系并引导我完成方法的流程 调用图 有这个工具吗 几年前 我使用 Rational Rose 建模工具 该工具具有对
  • Flex 字典字面量

    在 Flex 中工作 我需要用相当复杂的结构填充字典 基于本文档页面 http livedocs adobe com flex 3 html help html content 10 Lists of data 4 html我尝试通过以下语
  • 从 Air Native 扩展返回结构

    是否可以从本机代码返回结构 返回 int 或 boolean 相对简单 但是如何将更复杂的结构返回给动作脚本 您可以返回任何可以在本机代码中表示为 FREObject 的对象 这实际上包括任何 Actionscript 类或 Actions
  • 如何让枚举存储每个条目的额外信息

    我有一组包含相关信息的项目 这些项目是由我 程序员 定义的 用户不需要更改它们 它们永远不需要根据配置进行更改 并且它们唯一可能更改的时间是在我的应用程序的未来版本中 我事先知道这些项目应该有多少 以及它们的确切数据是什么 枚举是一种很棒的
  • 如何在动作脚本 3 中设置/访问外部 swf 文件的动态文本字段?

    我正在处理一个 fla 文件 其中添加了一个 swf 文件 我如何在该 swf 文件的动态文本上设置文本 有没有直接设置文本的方法 我不想在 url 中作为参数传递 我试过这样 var rq URLRequest new URLReques
  • AS3 [Event(name="", type="")],有什么意义?

    我使用 FlashDevelop3 R2 和 Flex 3 3 SDK 进行开发 在很多情况下我必须使用嵌入元数据标签 如下所示 Embed source path to file private var Asset Class 我很好地理
  • 如何获取MATLAB句柄对象的ID?

    当我尝试使用时出现问题MATLAB 句柄对象 http www mathworks com help techdoc ref handle html作为关键值MATLAB 容器 Map http www mathworks com help
  • 我可以在 Laravel 5.2 中创建一个继承自 User 的新类吗?

    我对 Laravel 还很陌生 使用的是迄今为止的最新版本 5 2 因此我遇到了以下困境 我知道 Laravel 附带了一个User开箱即用的类 但我想开发一个系统 在其中我可以有另外两种类型的用户 称为Researcher and Adm
  • 编译时在代码中替换Java静态最终值?

    在java中 假设我有以下内容 fileA java class A public static final int SIZE 100 然后在另一个文件中我使用这个值 fileB java import A class b Object t
  • 两个对象相互依赖。那不好吗?

    当我为我的项目构建自己的系统时 我学到了很多关于设计模式的知识 我想问你一个我找不到答案的设计问题 目前我正在使用套接字构建一个带有多个客户端的小型聊天服务器 现在我有三门课 人级其中包含昵称 年龄和房间对象等信息 房间级它保存诸如房间名称
  • 工厂模式和策略模式

    我需要创建一个类来负责结果集处理 但可能会发生应该使用不同的算法来处理该结果集的情况 我知道以下选项 1 使用策略模式 伪代码如下 interface Strategy processResultSet ResultSet rs class
  • 树的递归和非递归过程

    我们知道树是递归数据结构 我们在编写树的过程中使用递归 例如BST的删除方法等 递归的好处是 我们的程序变得非常小 例如中序遍历的代码只有4或5行 而不是非递归程序 虽然会很长 但从理解的角度来看 不像递归程序那么复杂 这就是为什么我讨厌递
  • 在 ActionScript 3 中在形状上绘制文本

    有没有办法仅使用 ActionScript 在 DisplayObject 或 Shape 中绘制文本 我在网上找到的唯一方法是创建 TextField 但我无法将 TF 添加到 DisplayObject 或 Shape Edit 解决了
  • 将数组从 Flash (AS3) 发送到 JavaScript

    是否可以使用ExternalInterface 调用将数组从Flash AS3 发送到JavaScript 我目前正在 Flash 内的 foreach 循环中多次调用一个函数 但速度太快 JavaScript 无法跟上 我的想法是创建一个
  • 使用ExternalInterface和IE从JavaScript获取Flash中的当前URL

    我正在尝试获取 Flash 播放器当前所在的 URL 不是 swf 文件的 URL 而是浏览器指向的 URL 到目前为止我已经使用过 var st String ExternalInterface call window location

随机推荐

  • 当使用多个 WHEN MATCHED 语句时,它们是全部执行,还是只执行一个?

    如果 MERGE 语句中有多个 WHEN MATCHED 语句 如果它们为真 它们是否都会执行 我的例子 DECLARE X bit NULL skipping the MERGE statement straight to WHEN MA
  • 分析 Ruby 程序调用的 C 共享库

    我有一个用Ruby和C编写的程序 C部分是一个共享库 它是Ruby程序的扩展 我想使用 gprof 分析我编写的 C 共享库 我像这样编译共享库 gcc I I usr lib ruby 1 8 i486 linux I usr lib r
  • 弱引用的好处

    有人可以解释一下 C 中不同类型引用的主要好处吗 弱引用 软参考 虚拟引用 强有力的参考 我们有一个消耗大量内存的应用程序 我们正在尝试确定这是否是一个需要关注的领域 我相信软引用和幻像引用来自 Java 长弱引用 将 true 传递给 C
  • python中是否可以同时运行多个asyncio?

    根据我得到的解决方案 在 python 中使用 asyncio 运行多个套接字 https stackoverflow com questions 62571622 running multiple sockets using asynci
  • 将自定义表单参数传递给表单集

    我定义了以下表格 class MyForm ModelForm def init self readOnly False args kwargs super MyForm self init args kwrds if readOnly D
  • mod_rewrite 传递变量

    我有以下 mod rewrite 规则 RewriteRule search php action procedure procedureName 1 这可以很好地将 blabla 之类的内容重定向到 search php action p
  • 就地应用于满足条件的 pandas 数据框的列

    考虑以下 pandas 数据框 df pd DataFrame t 1 2 3 x1 4 5 6 x2 7 8 9 gt gt gt print df t x1 x2 0 1 4 7 1 2 5 8 2 3 6 9 我想对名称包含字符 x
  • iOS 13 对 UISearchBar 色调的更改,无法达到相同的结果

    我一整天都在尝试 试图弄清楚如何让我的搜索栏在 iOS13 中显示与 iOS 12 11 中显示的相同 所以添加搜索栏的方式就是简单的新建一个UISearchController var searchController new UISea
  • 什么时候使用 Java 的 @Override 注解?为什么?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 使用 Java 的最佳实践是什么 Override注释以及为什么 用以下标记来标记每个被重写的
  • 基于分布式 JMS 的日志记录.. 表现平平?

    在我们精美的 ESB 中 每个请求的日志记录都是通过基于 JMS 日志记录的通用基础设施完成的 简而言之 发生的事情如下 服务获取请求服务 在 LogData 中准备一些数据 对象服务调用数据库 LogData 对象中捕获数据库交互所花费的
  • python中有COMMIT模拟用于写入文件吗?

    我有一个打开的文件可供写入 并且有一个运行了数天的进程 在相对随机的时刻将某些内容写入文件中 我的理解是 直到我执行 file close 之前 有可能没有任何内容真正保存到磁盘上 真的吗 如果主进程尚未完成时系统崩溃怎么办 有没有一种方法
  • 无法调用不带参数的类型的初始值设定项 - Swift

    我正在从 Objective C 转向 Swift 我想做的只是创建一个类的实例 以便我可以访问该类的属性 var myClassInstance MyClass print length is myClassInstance variab
  • “文件名 062014.xlsx 未被识别为 OLE 文件”

    我正在开发一个处理 Excel 的复杂程序 因此我使用 PHPExcel 从浏览器搜索和编辑 Excel 文件 我的问题出在程序的编辑部分 所以我编写了一个基本程序来编辑现有的 Excel 页面 PHPExcel 似乎无法将 Excel 中
  • 无法构造 `reactor.core.publisher.Mono` Spring Cloud OpenFeign 和 Spring boot 2 的实例

    Goal 从 Spring Boot 1 x webMvc 迁移到版本 2 webFlux 从 Spring Cloud Edgware SR2 迁移到 FinchleyM8 等待发布版本 Problem Feign gt OpenFeig
  • 特殊字符的后备字体

    我想知道在使用 font face 时是否可以进行后备设置 以便如果我的页面上的文本包含字体中未考虑的字符 例如日语字符 则只有这些字符显示在基本字体而其他所有字符仍保留为自定义字体 我想象有时一个段落中可能会混合使用两种字体 您所描述的是
  • Couchbase 基准测试显示 INSERT 和 GET 非常慢(使用 KeyValue 操作);比持久化 MySQL 数据慢

    我做了一个小型基准测试 将 Couchbase 在 Win 中运行 与 Redis 和 MySql 进行比较 编辑 添加了 Aerospike 进行测试 我们将 100 000 个 JSON 文档 插入到三个数据库 存储中 Redis 只是
  • 解决mysql最大用户连接错误的正确方法

    我在用着PHP with MYSQL数据库 因为两者都是开源且易于使用的 我执行时遇到问题insert and or update of 数百万行相继 当这个操作执行时我得到了MYSQL错误是 max user connections ac
  • 如何选择外接麦克风

    我已经成功为 iOS 编写了一个使用 AVAudioRecorder 的简单录音应用程序 到目前为止 它可以与内置麦克风或插入耳机插孔的外部麦克风配合使用 如何选择通过 USB 闪电端口 连接的音频源 我必须深入研究核心音频吗 具体来说 我
  • \d 和 \d+ 之间有区别吗? [复制]

    这个问题在这里已经有答案了 https www freecodecamp com challenges find numbers with regular expressions https www freecodecamp com cha
  • 不使用“final”怎么会成为安全问题呢?

    摘自 O Reilly s 第 113 页基本 ActionScript 3 0 2007 最终方法有助于隐藏类的内部细节 制作一个类或一个 方法final阻止其他程序员扩展类或重写 用于检查类内部结构的方法 这样的预防 被认为是方法之一保