当前位置: 首页 > news >正文

Delphi 是一种内存安全的语言吗?

上个月,美国政府发布了 "回到基石 "报告: 通往安全和可衡量软件之路 "的报告。该报告是美国网络安全战略的一部分,重点关注多个领域,包括内存安全漏洞和质量指标。

许多在线杂志都对这份报告进行了评论,强调了对 C 和 C++ 编程语言的大力反击。

其中一些文章包括:

  • 白宫敦促开发人员放弃 C 和 C++   作者:InfoWorld
  • 白宫敦促开发人员避免使用 C 和 C++,使用 "内存安全 "编程语言 by Tom's Hardware
  • 白宫敦促科技公司采用安全的程序语言: by readwrite

目录

一、美国政府报告对内存安全语言有何论述?

二、美国国家安全局是否把 Delphi 列为内存安全语言?

三、使用内存安全语言是否意味着我可以完全避免安全风险?

四、美国国家安全局和美国政府将 Delphi 列为内存安全语言--它还推荐了什么?

五、什么是供应链安全?

六、Embarcadero 正在采取哪些措施来帮助应对安全风险?


一、美国政府报告对内存安全语言有何论述?

报告重点关注 "内存安全漏洞",并挑出了 "既缺乏与内存安全相关的特征,又在关键系统中高度扩散的编程语言"。报告继续建议 "按照网络安全和基础设施安全局(CISA)开放源代码软件安全路线图的建议,从一开始就使用内存安全的编程语言。

参考文献是《美国国家安全局关于软件内存安全的网络安全信息表》(NSA Cybersecurity Information Sheet on Software Memory Safety)。这份文件更详细地解释了什么是内存安全,认为内存安全是类型安全、安全分配和删除(可能有垃圾收集器)的混合体。本段为核心内容:

使用内存安全语言有助于防止程序员引入某些类型的内存相关问题。内存是作为计算机语言的一部分自动管理的;它不依赖于程序员添加代码来实现内存保护。计算机语言通过结合使用编译时和运行时检查来实现自动保护。这些固有的语言特点可以保护程序员不会无意中引入内存管理错误。内存安全语言的例子包括 Python®、Java®、C#、Go、Delphi/Object Pascal、Swift®、Ruby™、Rust® 和 Ada。即使使用内存安全语言,内存管理也并非完全安全。

二、美国国家安全局是否把 Delphi 列为内存安全语言?

是的,Delphi 被列为内存安全语言。一些文章最初报道的安全语言列表较短,只包括一些最流行的语言,不包括 Delphi。后来,根据美国国家安全局的报告,对该列表进行了更正。

考虑到 Delphi 缺少内存安全的特征之一--垃圾回收,Delphi 社区就是否认为该语言安全进行了一些讨论。不过,官方的评估是基于多种理由并考虑到其他因素后做出的:

  • 安全编程语言的一个核心特征是拥有强大的类型系统,并在编译时而不是运行时验证数据类型映射。动态语言,即使有垃圾回收器,也会有不足之处,可能会出现运行时错误,从而影响其安全性。
  • 另一个因素是在一般代码中不必使用指针和更直接的内存管理。虽然 Delphi 并不禁止使用直接内存访问,但这种情况相当少见。即使没有 GC,Delphi 也能提供自动和简化内存管理的机制。

三、使用内存安全语言是否意味着我可以完全避免安全风险?

另一个总体考虑是,内存安全是一个目标,但不是绝对的。例如,主要报告强调,在某些类型的应用中,执行时间的可预测性至关重要(指航空航天工业)。在这些应用中,垃圾回收器在不可预测的时间启动,可能会影响具有关键时序的代码的程序执行。正是由于这个原因,Delphi 与工业自动化领域的其他流行语言相比具有显著优势。它允许直接控制,同时与 C++ 相比保持在更高和更简单的水平上。

四、美国国家安全局和美国政府将 Delphi 列为内存安全语言--它还推荐了什么?

报告在建议向内存安全语言转变的同时,还强调了静态代码分析正式方法的使用,尤其是在安全方面。我们发现 Delphi 在这一领域的兴趣也在不断增长,我们一直在推广在这一领域提供帮助的第三方工具。

此外,还有很长一部分内容是关于基于硬件或 CPU 级别的内存安全性执行。在同一领域,美国国家安全局的原始报告强调了利用控制流防护(CFG)、地址空间布局随机化(ASLR)和数据执行防护(DEP)等功能的重要性。其中一些安全设置已在最近的 Delphi 版本中强制执行,现在已成为新项目的默认设置。

五、什么是供应链安全?

最后,还有一个很长的领域涉及库依赖链的安全,有时也被称为 "供应链安全",主张使用正式的方法来评估库的安全性,包括开源库的安全性。越来越多的人担心,许多项目的大量依赖性正在扩大安全风险,这不是由于项目代码,而是由于所使用的库。在这方面,报告详细描述了 Log4j Java 库中的 Log4Shell 漏洞。该库漏洞影响了 Java 这样的内存安全语言,用报告的话说,它显示了 "一个关键的弱点,恶意行为者可以通过它入侵全世界的计算机系统"。报告继续指出,"这一漏洞凸显了帮助确保开源生态系统安全的迫切需要,而开源生态系统促进了全球范围内的巨大创新"。

六、Embarcadero 正在采取哪些措施来帮助应对安全风险?

显然,从政府机构到各种规模的企业,各个层面对软件安全的关注都在不断增加。甚至在白宫和美国国家安全局发布报告,将 Delphi 列为内存安全语言之前,Embarcadero 就已经将安全性视为客户日益关注的问题。我们将一如既往地专注于投资和改进 Delphi 对现代安全技术的支持,并在此基础上提供有关真正风险和可用缓解措施的明确教育。

相关文章:

Delphi 是一种内存安全的语言吗?

上个月,美国政府发布了 "回到基石 "报告: 通往安全和可衡量软件之路 "的报告。该报告是美国网络安全战略的一部分,重点关注多个领域,包括内存安全漏洞和质量指标。 许多在线杂志都对这份报告进行了评论&#xff0…...

golang语言系列:Scrum、Kanban等敏捷管理策略

云原生学习路线导航页(持续更新中) 本文是 golang语言系列 文章,主要对编程通用技能 Scrum、Kanban等敏捷管理策略 进行学习 1.什么是敏捷开发 敏捷是一个描述软件开发方法的术语,它强调增量交付、团队协作、持续规划和持续学习。…...

QT背景介绍

🐌博主主页:🐌​倔强的大蜗牛🐌​ 📚专栏分类:QT❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、QT背景 1.1什么是QT 1.2QT的发展历史 1.3什么是框架、库 1.4QT支持的平台 1.5QT的优点 1.6QT的…...

动态规划详解(Dynamic Programming)

目录 引入什么是动态规划?动态规划的特点解题办法解题套路框架举例说明斐波那契数列题目描述解题思路方式一:暴力求解思考 方式二:带备忘录的递归解法方式三:动态规划 推荐练手题目 引入 动态规划问题(Dynamic Progra…...

前端大额计算,真正解决js精度丢失问题

1.解决前端大额计算导致精度丢失问题 2.从底层上解决这个问题,计算时不使用js 运行时计算。 使用rust语言来解决这个问题,因为是底层语言,不涉及到精度问题。 3.实现步骤 步骤 1: 安装工具 确保你已经安装了Rust工具链和wasm-pack&#x…...

Android笔记--MediaCodec(一)

这一节主要来了解一下MediaCodec,Android MediaCodec 是 Android 平台提供的一个用于处理音频和视频数据的 API。它允许开发者对音频和视频数据进行编码和解码,支持多种格式和编解码器。MediaCodec API 通常用于实现实时音视频处理,如视频录制…...

Linux简单介绍

Linux简单介绍 编译器VMware虚拟机Ubuntu——LinuxOS为什么使用LinuxOS? 目录结构Windows目录结构Linux操作系统home是不是家目录? Linux常用命令终端命令行提示符与权限切换命令tab 作用:自动补全上下箭头pwd命令ls命令mkdir命令touch命令rm…...

Servlet 的基本理解

Servlet 是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能,统一接口。由其他内部厂商如tomcat,jetty内部实现web的功能。如一个http请求到来:容器将请求封装为servlet中的HttpServletRequest对象,调用init()&a…...

JavaScript之applye、bind和call方法详解

Question Q1 apply()、bind()和call()方法的区别在哪? Q2 apply()和call()的应用场景 Q3 apply()、bind()和call()方法手写实现逻辑 来源 继承自Function.prototype,属于实例方法 console.log(Function.prototype.hasOwnProperty(call)) //trueconsole.l…...

Docker,anaconda环境的部署与迁移

功能上线将提上日程,但是如何将我windows环境下的程序放到linux服务器的测试环境跑通呢?这是我这整个清明假期将要解决的一件事,最蠢的办法就是看自己的环境下有哪些依赖,如何到服务器上一个一个下,但是首先这个方法很…...

【大数据运维】Hbase shell 常见操作

文章目录 一. DDL1. 表的DDL1.1. 创建表1.2. 删除表 2. 列族的DDL2.1. 增加一个列簇2.2. 删除列族2.3. 修改列族版本(ing) 二. DML1. 插入与更新数据2. 删除数据3. 清空表 三. DQL1. scan:查一批数据1.1. 查询全部1.2. 过滤rowkey1.3. 过滤列…...

LeetCode-217存在重复的元素

217 存在重复的元素 给定一个整数数组,判断是否存在重复元素。 如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。 JavaScript的 Array 对象是用于构造数组的全局对象,数组是类似…...

基于两个单片机串行通信的电子密码锁设计

1.功能 电子号码锁在实际应用中应该有两部分,一部分在外部,有键盘部分和密码显示;另一部分内部,设置密码、显示密码。使用单片机自身带有的串口可以很方便的实现单片机之间的通信,使输入的密码值传送到主机检验是否是…...

产品经理功法修炼(3)之产品设计

点击下载《产品经理功法修炼(3)之产品设计》 1. 前言 产品经理的能力修炼并非局限于某一技能的速成,而是需要全面参与到产品的整个生命周期中,通过不断的实践来逐步提升自己的各项能力。尽管在企业的日常运作中,我们不可能身兼数职去扮演每一个角色,但作为产品的核心负…...

Qt 的发展历史、现状与启示

Qt 最早在1991年由挪威的两位程序员 Eirik Chambe-Eng 和 Haavard Nord 开发,他们在1994年创立 Trolltech 公司(奇趣科技)正式经营软件业务。Qt 的第一个公众预览版于1995年面世,之后在2008年被诺基亚收购;2011年到201…...

Quiet-STaR:让语言模型在“说话”前思考

大型语言模型(llm)已经变得越来越复杂,能够根据各种提示和问题生成人类质量的文本。但是他们的推理能力让仍然是个问题,与人类不同LLM经常在推理中涉及的隐含步骤中挣扎,这回导致输出可能在事实上不正确或缺乏逻辑。 考虑以下场景:正在阅读一…...

【Kotlin】匿名类和伴生类

1 匿名类 1)无继承 fun main() {var obj object {var name: String "zhang"override fun toString(): String {return name}}println(obj) // zhang } 2)有继承 fun main() {var obj object: People {var name: String "zhang"…...

【机器学习算法介绍】(3)决策树

决策树是一种常见的机器学习算法,用于分类和回归任务。它模拟了人类决策过程,通过一系列的问题来引导决策。决策树的构建涉及三个主要步骤:特征选择、树的构建和树的剪枝。 1. 特征选择 特征选择是决策树构建过程中的第一步,目的…...

算法之查找

1、顺序查找: package com.arithmetic.search; //顺序查找 //sequentialSearch 方法接收一个整数数组和一个目标元素作为参数,并使用顺序查找的方式在数组中查找目标元素。 //它通过循环遍历数组元素,逐个与目标元素比较,如果找到…...

LInux脚本学习

1.注释 #单行注释 以 # 字符开头就是单行注释 当然第一行除外,比较特殊 2.多行注释 3.Shell文件的作用 Shell文件就是linux命令集 4.sh脚本的执行方式 bash xxx.sh 5.新建的文件会没有执行权限 #为文件赋予执行权限 chmod ux xxx.sh 6.编写规范 #!/bin/bash #…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​,覆盖应用全生命周期测试需求,主要提供五大核心能力: ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

无法与IP建立连接,未能下载VSCode服务器

如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中,具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类: 身份验证机制:直接将未经授权的爬虫阻挡在外反爬技术体系:通过各种技术手段增加爬虫获取数据的难度…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子: 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

图解JavaScript原型:原型链及其分析 | JavaScript图解

​​ 忽略该图的细节(如内存地址值没有用二进制) 以下是对该图进一步的理解和总结 1. JS 对象概念的辨析 对象是什么:保存在堆中一块区域,同时在栈中有一块区域保存其在堆中的地址(也就是我们通常说的该变量指向谁&…...