写点什么

被批不够安全, C++ 创建者压力下提出解决方案

  • 2023-02-13
    北京
  • 本文字数:970 字

    阅读完需:约 3 分钟

被批不够安全,  C++ 创建者压力下提出解决方案

近期,这条由 C++ 创建者 Bjarne Stroustrup 与其它开发者联合发布声明表示,需要改变编程语言自身来解决解决安全问题。

 

“作为⼀种⾼性能的通⽤语⾔是 C++成功的原因。可能有⼀天 C++ 会将其⽕炬传递给另⼀种更强⼤的语⾔,但⽬前还不是这样。 我们永远不应该放弃数百万⾏现有代码,其中⼀些代码并不需要安全。我们应该认识到⽀持 C++ 安全的紧迫性是我们这个时代的问题之⼀。”Stroustrup 等人在文档里提到。他们总结了 C++ 的安全原则:

 

  • 不要从根本上破坏向后兼容性——与更现代、更流行的语言相比,兼容性是 C++的一个关键特性和优势。

  • 不要以无法表达抽象为代价来提供安全性,抽象是 C++力量的支柱。

  • 不要留下一个“安全”的 C 子集,它会消除 C++的生产力优势。

 

具体来说,他们建议“将几个特性打包到配置文件中(Profiles )”(“配置文件”的解释是:定义要强制执行属性的限制和需求的集合,用来强制执⾏语义⼀致的规则集,⽽不是让单个开发⼈员在对单个语⾔、库设施和编码规则的⼤量限制中进⾏选择)。通过这种方式,安全方面的新更改“应该是可见的,这样安全代码部分就可以被命名(可能使用配置文件),并且可以与普通代码混合使用。

 

他们表示,配置文件专门用于支持嵌入式计算、性能敏感的应用程序,或高度特定的问题领域,如汽车、航空航天、航空电子设备、核或医疗应用程序。

 

“我们认为 Profiles 不会分裂⽣态系统,反⽽增加了多样性。”Stroustrup 等人表示。他们认为安全不应该强加于每个⼈,尤其是那些不需要或不想要的⼈。安全不应该是静态的,⽽是随着了解的增多、外部安全专家更好了解自己的真正需要后不断发展。

 

Stroustrup 这一举动的背后是近期美国国家安全局(NSA)等对 C++ 安全性的点名批评。但当时他对此表示否认:NSA 报告中提到的 “安全” 编程语言(如 C#、Rust、Go、Java、Ruby 或 Swift) 在重要应用程序中实际上并不优于 C++。

 

Stroustrup 当时批评 NSA 的报告只关注内存处理问题,而忽略了许多其他影响项目安全性和可靠性的编程语言问题。他建议使用代码注释和编译器选项来控制规则的包含,以确保类型和资源得到安全处理。考虑到可能对项目造成的破坏,他保证 C++ 社区不会忽视安全问题,但只关注安全问题也不行。


参考链接:

https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2759r0.pdf


推荐阅读:

一个架构师在 2023 年需要掌握哪些“必杀技”?

2023-02-13 15:403986

评论 3 条评论

发布
用户头像
这篇文章很多乱码。
2023-02-14 13:36 · 广东
回复
用户头像
Profile不是配置文件的意思。参考Bluetooth的Profile概念。
2023-02-13 21:53 · 江苏
回复
感谢指出,补充下原文更多对Profile的解释,或许可以帮助大家更好理解:We call a collection of restrictions and requirements that defines a property to be enforced, a “profile.” A typical profile will not be a simple subset of C++ language features. For example, a range-safety profile cannot simply ban the current unchecked subscripting, but needs to provide a run-time checked alternative for many cases.
2023-02-14 09:52 · 北京
回复
没有更多了
发现更多内容

动力电池知识皮毛(28天写作 Day11/28)

mtfelix

自动驾驶 28天写作 电动汽车

如果公司要找一个人代替我,该是个咋样的人?

再见陛下

offer

现在就开始倒数2030了? 华为的这条线索不能错过

脑极体

第一周作业

Geek_72d5ab

「产品经理训练营」作业01:如果公司要招一个高级版的你

狷介

产品经理训练营

产品经理训练营——第一周总结

小匚

产品经理训练营 极客大学产品经理训练营

产品经理训练营第一周作业

happy-黑皮

产品经理训练营

JVM性能调优实战:让你的IntelliJ Idea纵享丝滑

Silently9527

Java jvm调优

下一代消息队列pulsar到底是什么

比伯

Java 编程 架构 面试 计算机

重学JS | cookie和localstorage的哪个更安全?

梁龙先森

面试 大前端 编程语言 28天写作

第一章 认识产品经理(下)

郭栋

安全白帽子可能会为DevSecOps铺平道路

啸天

DevSecOps 应用安全 开发安全

杭州产品岗位现状分析

王振

你还在担心搞不定面试官?吃透这份4000道Java面试真题合集,金三银四的黑马就是你了

Java 编程 程序员 面试

面试官:如果让你设计一个高并发的消息中间件,你会怎么做?

冰河

并发编程 高并发 消息队列 消息中间件

高仿书旗小说 Flutter 版,学起来

GitHub指北

产品经理训练营-第一章作业

Ryun

产品训练营第一周作业【撰写岗位模型】

马悦

学习 产品 产品经理训练营

细说MAC地址漂移

GMT UTC CST ISO 夏令时 时间戳,都是些什么鬼?

YourBatman

ISO 时间戳 GMT UTC

Kafka底层原理剖析(近万字建议收藏)

五分钟学大数据

大数据 kafka

HTML(二)——用html设置文本

程序员的时光

程序员 28天写作

产品经理训练营第0期 第一次作业

孙行者

第0期 产品经理训练营

Zookeeper面试常见11个连环炮

田维常

面试

产品经理训练营——作业1

小匚

Python 字节跳动 产品经理训练营 极客大学产品经理训练营

产品经理训练营第一章作业

王德文

产品经理训练营

产品经理训练营第一周总结

happy-黑皮

产品经理训练营

你真的知道如何删除list集合中特定元素吗

万里无云

Java List remove

产品经理训练营-第一次作业

Jophie

产品经理训练营

产品训练营作业:1、认识产品经理

Geek_06d2e5

28天瞎写的第二百二十二天:五道营胡同的葡萄芽儿

树上

28天写作

被批不够安全,  C++ 创建者压力下提出解决方案_语言 & 开发_褚杏娟_InfoQ精选文章