写点什么

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

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

语音驱动嘴型与面部动画生成的现状和趋势

行者AI

算法 人工智能’

Wallys/WiFi6 MiniPCIe Module 2T2R 2×2.4GHz 2x5GHz MT7915 MT7975

wallys-wifi6

IPQ4019 IPQ6010 ipq6018 QCN9074 MT7975

【古月21讲】ROS入门系列(1)——ROS命令工具的使用及创建工作空间和功能包

秃头小苏

ROS 7月月更

mysql进阶(二)你真的了解索引吗?

No Silver Bullet

索引 MySQL 数据库 7月月更

面试官:小伙子你来说下缓存穿透、缓存雪崩、缓存击穿

Java永远的神

Java redis 程序员 面试 程序人生

团队管理之git提交规范:commit记录那点事儿

南极一块修炼千年的大冰块

7月月更

2022最新面试八股文,共计12w字,200多页,16个Java技术栈

Java全栈架构师

Java spring 程序员 面试 程序人生

【C语言】进阶指针seven

謓泽

7月月更

从预测到决策,九章云极DataCanvas推出YLearn因果学习开源项目

九章云极DataCanvas

人工智能 YLearn 开源工具包 因果推断

你玩过轻量系统软总线应用吗?

OpenHarmony开发者

OpenHarmony

LeetCode-112. 路径总和(java)

bug菌

Leet Code 7月月更

java零基础入门-String

喵手

Java 7月月更

好家伙!阿里人用5个案例就彻底讲清了SpringSecurity安全框架

程序员小毕

Java spring 程序员 面试 springsecurity

XGRIDS三维重建服务,构建云上数字孪生世界

阿里云弹性计算

容器 3D渲染 弹性计算 GPU算力

Android 自动化测试

沃德

android 程序员 7月月更

博云入选Gartner中国云管理工具市场指南代表厂商

BoCloud博云

云原生 Gartner 云管理平台 云管理

用什么承受全部的数据-RDD、DataFrame还是Dataset

怀瑾握瑜的嘉与嘉

spark 7月月更

这一次带你透彻解析RocketMQ消息中间件

Java永远的神

Java 程序员 面试 RocketMQ 消息中间件

【愚公系列】2022年7月 Go教学课程 011-字符串类型

愚公搬代码

7月月更

数据治理实战篇!选择什么样的工具让数据治理落地更简单

雨果

数据治理

助力人工智能迈向新阶段,YLearn因果学习开源项目重磅发布!

九章云极DataCanvas

人工智能 开源项目 因果学习 YLearn

uWebSockets.js 遇见 Http3

devpoint

JavaScript websocket HTTP3.0 7月月更

Python爬虫挺刑的,去VX公众某位置,平台登录加密参数扣取

梦想橡皮擦

Python 爬虫 python 爬虫 7月月更

首届京东科技合作伙伴大会召开,博云携手京东科技共创产业数字化新增长

BoCloud博云

容器 云原生 PaaS

YLearn因果学习开源项目「贡献者计划」精彩来袭!

九章云极DataCanvas

AI 开发者 因果学习 YLearn

电商订单支付时防止重复支付的原理

程序员小毕

Java 程序员 面试 程序人生 后端

不知道这4种缓存模式,你可能并不是真的懂缓存

Java永远的神

Java 缓存 程序员 面试 后端

简述Serverless原理及运用

南城FE

Serverless 前端 7月月更

什么是微软 Edge 浏览器 Tracking Prevention 的 Org Relationship Mitigation 策略

汪子熙

JavaScript html 前端开发 web开发 7月月更

直播带货系统源码(开源系统版)——如何搭建测试呢?

开源直播系统源码

软件开发 直播源码 语音直播源码 连麦直播

两数之和 II - 输入有序数组

面试官问

LeetCode 两数之和

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