C++会像其他语言一样成为一种安全的语言吗?

C++专家赫伯萨特探讨了如何通过严格安全规则、工具支持和C++配置文件来提升语言的安全性,主张在C++中默认启用安全措施以降低内存安全风险,同时保持语言灵活性。斯特劳斯特鲁普的C++配置文件计划被提出作为改进的关键途径。
摘要由CSDN通过智能技术生成

在最近的一篇文章中,C++专家和ISOC++委员会主席赫伯萨特表示 如何让C++成为以铁锈为幌子的安全语言的观点 和其他安全记忆语言。他的食谱包括依赖工具,就像其他的msl一样,推广安全的语言功能,在编译器标记后面推出不安全的功能,等等。

Suter的出发点是认识到C++通过处理四个主要内存安全相关脆弱性类别而变得更加安全的重要性。实际上,在总共12个与内存安全相关的类别中,约占全部CVS的70%,其中有4个以不限读、不限写、空指针非引用和访问释放的内存为基础。

萨特认为,C++已经包括了对编写安全代码的广泛支持,而C++文献早已确定了适用于这一目标的关键规则。然而,他认为,作为一个关键的语言特性,C++应该严格执行这些规则,并且只有当程序员明确地选择不使用标准规则时,才可以使用不安全的行为。

在默认情况下启用安全规则不会限制语言的力量,而是需要明确选择非标准做法,从而减少无意中的风险。它可以随着时间的推移而进化,这是很重要的,因为C++是一种活的语言,对手会不断地改变他们的攻击。

萨特还描述了一些错误的问题和错误的概念,指出了大多数高危险度的计算机与内存安全性无关(尽管脱锁写是第一个罪魁祸首);MSLS也有他们的CVES;MSLS也依赖于静态分析器和消毒剂等工具。因此,最终的目标不可能是C++程序完全摆脱与内存安全相关的CVES,不依赖工具就强制执行内存安全,或者使C++代码可以正式证明。

萨特在他的文章中,恢复了关于C++内存安全的对话。 2023消极安全保证网络安全信息表,建议放弃C/C++ 以及其他记忆不安全的语言。

作为对国安局报告的回应 他认为C++可以像铁锈一样安全,没有后者的复杂性。 :

关于…的工作 C++核心准则特别旨在提供静态保证的类型安全和资源安全的C++ 对于那些不需要破坏代码基础的人来说,这些代码基础可以在没有如此强有力的保证或引入额外的工具链的情况下进行管理。

在这里,斯特劳斯特鲁普暗示了国际标准化组织委员会正在进行的  C++配置文件 ,目的是使它能够逐步采用更安全的行为,并在编译时强制执行。

"配置文件"是一组具有确定性和可执行性的规则子集。(限制),旨在实现具体保障。"确定性"意味着它们只需要局部分析,可以在编译器中实现(尽管它们不需要)。"可移植执行"意味着它们就像语言规则一样,所以程序员可以依靠不同的执行工具为相同的代码给出相同的答案。

C++配置文件特别包括 标牌安全 , 边界安全 ,以及 终生安全 .根据斯特劳斯特鲁普的说法,符合一个概要文件的代码是安全的,为该概要文件所涵盖的安全保证。

斯特劳斯特鲁普对国安局报告的批评并没有被忽视,而是收到了一些 吉米哈策尔的批评 ,包括C++还不是一个安全的内存语言,线程安全等领域没有得到很多考虑,而铁锈已经有很多与之相关的机制。

现在,即使是C++的系统也面临威胁,这是一种强大的内存安全编程语言,可以避免C++的许多问题。现在,即使C++根本不是"遗产"的领域,也有一个可行的、内存安全的选择,而没有C++所拥有的大量技术债务。

回到萨特的观点,他也相信,像斯特劳斯特鲁普一样,配置文件是使C++更安全的一个关键特性,在保留C++承诺的同时,C++代码中减少98%的类型/界限/初始化/生命周期CVES是可行的:

我不希望C++限制我能够有效地表达的东西。我只想让C++让我在默认情况下强制执行我们已经众所周知的安全规则和最佳实践,并且让我明确地选择退出,如果这是我想要的。然后我仍然可以使用完全现代的C++…只是更好。

在文章的结尾,他提出了C++ISO委员会可以遵循的广泛而具体的方向,以达到98%的目标。不要错过它的全部细节。

关于作者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值