微软向开源又迈进了一大步:Checked C
| 导读 | 微软开源了 Checked C ,这是一个 C 语言的扩展版本,可以用于解决 C 语言中的一系列安全相关的隐患。正如其名字所示,Checked C 为 C 语言增加了检查,这个检查可以帮助开发者检查常见的编程错误,比如缓存区侵占buffer overruns、内存访问越界、不正确的类型转换等。这些编程错误往往是造成许多重大安全漏洞的根本原因,比如破壳漏洞Shellshock、心脏出血漏洞Heartbleed、沙虫Sandworm等。 |

Checked C 通过修改控制指针来解决这些问题,指针被程序员们用来定义他们的代码所操作的内存地址。当指针数量一多,指针控制就往往容易忙中出乱,项目越大跟踪它们就越困难,类似 Chromium、Firefox、Office、OpenSSL 以及其它的大型代码库在这方面都存在这样的问题,你可以从它们的变更日志中看到大量的这类问题修复。“Checked C 允许程序员更好的描述他们想要如何使用指针,以及指针应该指向的内存范围”,微软说,“这个信息可以用于在运行时环境中添加检测,以侦测错误的数据访问,而不是让错误悄悄的发生而无所察觉。”

Checked C 也将允许开发者检测到他们以为 C 语言有、而实际却没有的功能误用。按编程界的说法来讲,这个叫做“边界检查bounds checking”的功能,用于检查变量/指针是否在它的范围之内赋值,C# 和 Rust 已经有这样的功能了,而且还不止于此。然而不幸的是,被广泛使用的 C 和 C++ 却没有这样的功能,微软希望只需要对现有的 C/C++ 程序做最小的改动,利用 Checked C 就可以得到安全方面的改善,这样会吸引大量的开发者开始使用 Checked C。
Checked C 项目已经放到了 GitHub 上。这并不是微软第一次对基本编程语言做出来自己的演绎,之前该公司的程序员们还创建了一个名为 TypeScript 的 JavaScript 的超集,并且它已经得到了广泛认可。
微软向开源又迈进了一大步:Checked C的更多相关文章
- 微软与开源干货对比篇_PHP和 ASP.NET在 Session实现和管理机制上差异
微软与开源干货对比篇_PHP和 ASP.NET在 Session实现和管理机制上差异 前言:由于开发人员要靠工具吃饭,可能和开发工具.语言.环境呆的时间比和老婆孩子亲人在一起的时间还多,所以每个人或多 ...
- 微软爱开源:向Linux社区开放60000多项专利
10月10日,微软在博客中宣布正式加入开放创新网络(Open Invention Network, 简称“OIN”),向所有开源专利联盟的成员开放其专利组合. 微软的加入意味着,旗下60000多项专利 ...
- 开源力量:微软竟开源 PowerShell
导读 曾经有段时间,微软称 Linux 是“癌症”,但是随着时光流逝,现在微软已经认识到了开源世界的不断增长,除了在这个领域加大投入之外别无选择.微软已经启动了几个开源项目,希望能吸引一些 Linux ...
- 微软准备开源PowerShell
微软有计划在近期内开源PowerShell 近日微软再次在向开源投出橄榄枝, PowerShell是面向Windows和Windows Server的自动化平台和脚本语言,帮助用户简化系统的管理.在纳 ...
- 喜大本\\ u0026普,微软的开源
词汇表--喜大本\\ u0026普:爱过.有趣的游戏,庆祝.奔走相告.简而言之<reload=1">微软宣布.NET开发环境开源>是个好消息. 前言及历史回想 就我个人来说 ...
- 微软正式开源Blazor ,将.NET带回到浏览器
微软 ASP.NET 团队近日正式开源了 Blazor ,这是一个 Web UI 框架,可通过 WebAssembly 在任意浏览器中运行 .Net . Blazor 旨在简化快速的单页面 .Net ...
- 微软的开源Sonar工具测试网站的性能和安全性
Tips 原文作者:ABHIMANYU GHOSHAL 原文地址:Microsoft's open-source Sonar tool will test your site's performanc ...
- 微软正式开源Blazor,将.NET带回到浏览器
微软 ASP.NET 团队近日正式开源了Blazor,这是一个Web UI框架,可通过WebAssembly在任意浏览器中运行 .Net. Blazor旨在简化快速的单页面 .Net 浏览器应用的构建 ...
- 微软Microsoft开源历程与相关资源
2001 Open source is bad for business, saysMicrosoft Linux is a cancer 2005 Enterprise Library 1.0 re ...
随机推荐
- selenium 实现浏览器 前进和后退
#coding=utf-8from selenium import webdriver driver = webdriver.Chrome()driver.get("https://www. ...
- 从pdf 文件中抽取特定的页面
前段时间买了一个kindle 电子书阅读器.我想用它来读的pdf文档.当然最主要是用来读python标准库&mysql的官方文档. 问题就来了.这两个都是大头书.之前用mac看还好.用kind ...
- mysqldump全量备份+mysqlbinlog二进制日志增量备份
日常的数据备份及恢复测试,是DBA工作重中之重的事情,所以要做好备份及测试,日常的备份常见有mysqldump+binlog备份.xtrabackup+binlog备份,无论那一种,几乎都少不了对bi ...
- Python目录常用操作
os.path.basename(path) #取文件名 os.path.getsize(path) #取文件大小 os.path.exists(path) #文件是否存在 os.path.dirna ...
- 关于release后retainCount还是1的问题
转自:http://www.cocoachina.com/bbs/read.php?tid=175523 realse之后再调用还能调用的的问题,我做了这么多年也是经常遇到,也曾经试图寻找原因, 就像 ...
- Selenium - Webdriver API /ActionChains API
一.控制浏览器 1.1 控制浏览器窗口大小 # 获取当前浏览器的大小 driver.get_window_size() # 通过像素设置浏览器的大小 driver.set_window_size( ...
- js基本知识2
一.提示框 1. 弹出警示框 alert(); window.alert(); window 窗口 2. 控制台输出 console.log() 3. 文档打印 document 文档 documen ...
- jquery清空textarea等输入框
转载自:http://blog.csdn.net/dyllove98/article/details/8870307 完整示例:http://www.keleyi.com/keleyi/phtml/c ...
- 我们通过一个服务器程序,以研究backlog参数对listen系统调用的影响,运行截图如下
启动服务器程序,服务器程序正在等待客户端的连接 我们使用一次telnet命令就建立一个连接 打开多个终端窗口执行下列命名 #telnet 192.168.255.128 4444多次执行 然后我们执行 ...
- 使用submit异步提交,阻止表单默认提交
<form id="addForm" onSubmit="return false;"> <input type="submit&q ...