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 对现代安全技术的支持,并在此基础上提供有关真正风险和可用缓解措施的明确教育。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/790492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言内存函数,让内存管理更高效!

1. memcpy使⽤和模拟实现 2. memmove使⽤和模拟实现 3. memset函数的使⽤ 4. memcmp函数的使⽤ 正文开始: 1. memcpy 使⽤和模拟实现 void * memcpy ( void * destination, const void * source, size_t num ); • 函数memcpy从source的位置开始向后复…

Linux中部署Java jar 包 shell 脚本

Linux中部署Java jar 包 shell 脚本 #!/bin/bash set -e# 基础 # export JAVA_HOME/work/programs/jdk/jdk1.8.0_181 # export PATHPATH$PATH:$JAVA_HOME/bin # export CLASSPATH$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarDATE$(date %Y%m%d%…

区间概率预测python|QR-CNN-BiLSTM+KDE分位数-卷积-双向长短期记忆神经网络-时间序列区间概率预测+核密度估计

区间预测python|QR-CNN-BiLSTMKDE分位数-卷积-双向长短期记忆神经网络-核密度估计-回归时间序列区间预测 模型输出展示: (图中是只设置了20次迭代的预测结果,宽度较宽,可自行修改迭代参数,获取更窄的预测区间) 注&am…

类似微信的以文搜图功能实现

通过PaddleOCR识别图片中的文字,将识别结果报存到es中,利用es查询语句返回结果图片。 技术逻辑 PaddleOCR部署、es部署创建mapping将PaddleOCR识别结果保存至es通过查询,返回结果 前期准备 PaddleOCR、es部署请参考https://blog.csdn.net…

stm32之基本定时器的使用

在上文我们使用到了HAL库的自带的延时函数,HAL_Delay();我们来看一下函数的原型 __weak void HAL_Delay(uint32_t Delay) {uint32_t tickstart HAL_GetTick();uint32_t wait Delay;/* Add a freq to guarantee minimum wait */…

iOS object-c self关键字总结

在Objective-C中,self 关键字是一个指向当前对象的指针。它是对象自身实例的别名,通常在对象内部的方法中使用,以提供一个指向当前对象的引用。使用 self 可以帮助你访问对象的属性和方法,特别是在处理消息传递和方法调用时。 以…

【SQL】1587. 银行账户概要 II

题目描述 leetcode题目:1587. 银行账户概要 II Code 写法一 select name, sum(amount) as balance from Users U left join Transactions T on U.account T.account group by U.account having sum(amount) > 10000写法二 select Users.name, balance from…

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

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

Unity自定义icon

Unity自定义icon 1. 新建文件夹 OfficeFabricIconSet2. 新建Iconset3. 新建子文件夹Textures并添加icon图片4. 向iconset添加Quad Icons5. 最终效果 教程来源处: https://365xr.blog/build-your-own-button-icon-set-for-microsoft-hololens-2-apps-with-mrtk-using…

Java RESTful API开发:搭建基于Spring Boot的轻量级API服务

引言: 在当今互联网时代,API(Application Programming Interface)已经成为了各种软件系统之间交互的重要方式。而REST(Representational State Transfer)则是一种设计风格,用于构建分布式系统中…

前视声呐目标识别定位(三)-部署至机器人

前视声呐目标识别定位(一)-基础知识 前视声呐目标识别定位(二)-目标识别定位模块 开发了多波束前视声呐目标识别定位模块后,自然期待能将声呐部署至AUV,实现AUV对目标的抵近观测。原本规划着定位模块不…

C++算法——二分法查找

一、二分查找算法思想和模版 1.算法思想 2.细节处理 3.模板 二、二分查找 1.链接 704. 二分查找 - 力扣(LeetCode) 2.描述 3.思路 先从最经典的题目去切入,思路就是二分查找,这里我们认为,目标值既可以看作为左部…

ES6参数默认值

1.参数是按顺序传递的,参数的默认值可以赋给任意位置的参数,给参数传undefined,参数才会使用默认值,例子如下: function foo(a, b 2, c 3) {console.log(a, b, c); } foo() //undefined 2 3 foo(1, null, undefined…

XSS 与 CSRF 攻击——有什么区别,如何加以防护

跨站脚本(XSS)和跨站请求伪造(CSRF),它们将恶意脚本注入目标系统,以进一步利用技术栈或窃取用户数据。 什么是 XSS 和 CSRF? CSRF和XSS都是客户端攻击,它们滥用同源策略,利用web应用程序和受害用户之间的信任关系。XSS和跨站脚…

WPS二次开发系列:以自动播放模式打开PPT文档

在前面文章中 WPS SDK打开文档并实现保存回传 介绍了如何使用WPS SDK打开文档,那么我们是否能够实现在打开WPS 文档的时候能够传递一些参数来控制打开文档的行为呢,经过研究WPS SDK相关文档和API,最终实现了 以自动播放方式打开PPT文档功能。…

【RAG】内部外挂知识库搭建-本地GPT

大半年的项目告一段落了,现在自己找找感兴趣的东西学习下,看看可不可以搞出个效果不错的local GPT,自研下大模型吧 RAG是什么? 检索增强生成(RAG)是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来…

Springboot集成token认证

一、引出session问题以及token、鉴权 session都是保存在内存中,认证用户增多,服务端开销明显增大。若是认证的记录保存在某台服务器内存中时,意味着用户的下次请求只能够在该服务器内存中进行认证。CSRF跨站攻击 token的鉴权机制&#xff1…

mysql--sql常用语句

通过profile命令来查看当前最主要的耗费时间的步骤。 mysql> select count(1) from t1; ---------- | count(1) | ---------- | 1 | ---------- 1 row in set (0.11 sec)mysql> show profiles; ----------------------------------------------- | Query_ID | Du…

Spring Cloud微服务入门(二)

微服务的技术栈 服务治理: 服务注册、发现、调用。 负载均衡: 高可用、集群部署。 容错: 避免雪崩、削峰、服务降级。 消息总线: 消息队列、异步通信,数据一致性。 网关: 校验路径、请求转发、服务集成…

Git 常用命令集

Git 常用命令集 符号说明&#xff1a; 尖括号&#xff08;< >&#xff09;表示需要替换成尖括号内文字描述的内容 方括号&#xff08;[ ]&#xff09;表示可选项 远程库名&#xff0c;形如 git.com 路径名&#xff0c;形如 D:\YouthGit\GitTest 或者 GitTest 1.初始化操…