写点什么

被批不够安全, 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:404448

评论 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 · 北京
回复
没有更多了
发现更多内容

大数据生态中的 RocketMQ 5.0

Apache RocketMQ

消息队列 Apache RocketMQ

大咖分享 | 如何构建 Alluxio 审计日志分析系统

Alluxio

分布式 Alluxio 大数据 开源 数据编排 审计日志

钉钉全栈化实践总结-前端篇

阿里技术

前端 钉钉 全栈

Hexo框架+Github 搭建免费静态博客教程(一)

程序员余白

Hexo Github' 博客搭建 11月月更

区块链DAPP开发成本差别如此之大?深圳区块链公司告诉你

W13902449729

dapp dapp开发 区块链开发

网易云信 toB 质量保障体系实践

网易云信

质量保障 PaaS平台

腾讯蓝鲸 API 网关如何借助 APISIX 实现产品升级与业务完善

API7.ai 技术团队

云原生 API网关 APISIX 客户案例

文档管理系统平台:实现文档管理现代化

Baklib

探究多线程和异步

C++后台开发

多线程 后端开发 异步 linux开发 C++开发

复杂A/B实验如何设计?火山引擎DataTester帮你落地!

字节跳动数据平台

大数据 数据 火山引擎 A/B测试

最佳实践|用腾讯云AI图像能力实现AI作画

牵着蜗牛去散步

腾讯云 腾讯 AI

【kafka思考】最小成本的扩缩容副本设计方案

石臻臻的杂货铺

kafka 11月月更

MSE 结合 Dragonwell,让 Java Agent 更好用

阿里巴巴云原生

阿里云 微服务 云原生

管控内部威胁,数据如何安全使用?

极盾科技

数据安全

【网易云信】网易云信 toB 质量保障体系实践

网易智企

质量保障 PaaS平台

无脚本自动化测试

FunTester

Hexo+Github搭建个人博客教程(二)

程序员余白

Hexo 博客搭建 11月月更

RocketMQ 在同程旅行的落地实践

Apache RocketMQ

消息队列 Apache RocketMQ

云原生时代数据库技术趋势与场景选型

OceanBase 数据库

快速实现无人车远程控制开发——实践类

阿里云AIoT

阿里云 物联网 远程控制

“工程化”对于大型数据平台而言,意味着什么?新一届StartDT Hackathon来了

奇点云

数据平台 奇点云

Java面试题解析:如何使用ReentrantLock的条件变量,让多个线程顺序执行?

千锋IT教育

华为阅读年度会员4折,万元好礼抢先看

叶落便知秋

Karmada大规模测试报告发布:突破100倍集群规模

华为云开发者联盟

云计算 云原生 华为云 企业号十月 PK 榜

鱼传科技:函数计算,只要用上就会觉得香

阿里巴巴云原生

阿里云 云原生 函数计算

记一次多个Java Agent同时使用的类增强冲突问题及分析

华为云开发者联盟

开发 华为云 企业号十月 PK 榜

深圳区块链DAPP程序开发未来发展简介

W13902449729

dapp开发

5款宝藏办公软件,高质量打工人必备!

淋雨

OCR 办公软件 IDM

什么是入侵检测系统?有哪些分类?

wljslmz

网络安全 11月月更 入侵检测 IDS

butterfly美化日记(一)

程序员余白

Hexo butterfly 博客配置 11月月更

月日均AUM提升40倍!看这家银行如何做好网金客群分层经营?

索信达控股

科技 客户分群 网金客群

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