导读 微软开源了 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的更多相关文章

  1. 微软与开源干货对比篇_PHP和 ASP.NET在 Session实现和管理机制上差异

    微软与开源干货对比篇_PHP和 ASP.NET在 Session实现和管理机制上差异 前言:由于开发人员要靠工具吃饭,可能和开发工具.语言.环境呆的时间比和老婆孩子亲人在一起的时间还多,所以每个人或多 ...

  2. 微软爱开源:向Linux社区开放60000多项专利

    10月10日,微软在博客中宣布正式加入开放创新网络(Open Invention Network, 简称“OIN”),向所有开源专利联盟的成员开放其专利组合. 微软的加入意味着,旗下60000多项专利 ...

  3. 开源力量:微软竟开源 PowerShell

    导读 曾经有段时间,微软称 Linux 是“癌症”,但是随着时光流逝,现在微软已经认识到了开源世界的不断增长,除了在这个领域加大投入之外别无选择.微软已经启动了几个开源项目,希望能吸引一些 Linux ...

  4. 微软准备开源PowerShell

    微软有计划在近期内开源PowerShell 近日微软再次在向开源投出橄榄枝, PowerShell是面向Windows和Windows Server的自动化平台和脚本语言,帮助用户简化系统的管理.在纳 ...

  5. 喜大本\\ u0026普,微软的开源

    词汇表--喜大本\\ u0026普:爱过.有趣的游戏,庆祝.奔走相告.简而言之<reload=1">微软宣布.NET开发环境开源>是个好消息. 前言及历史回想 就我个人来说 ...

  6. 微软正式开源Blazor ,将.NET带回到浏览器

    微软 ASP.NET 团队近日正式开源了  Blazor ,这是一个 Web UI 框架,可通过 WebAssembly 在任意浏览器中运行 .Net . Blazor 旨在简化快速的单页面 .Net ...

  7. 微软的开源Sonar工具测试网站的性能和安全性

    Tips 原文作者:ABHIMANYU GHOSHAL 原文地址:Microsoft's open-source Sonar tool will test your site's performanc ...

  8. 微软正式开源Blazor,将.NET带回到浏览器

    微软 ASP.NET 团队近日正式开源了Blazor,这是一个Web UI框架,可通过WebAssembly在任意浏览器中运行 .Net. Blazor旨在简化快速的单页面 .Net 浏览器应用的构建 ...

  9. 微软Microsoft开源历程与相关资源

    2001 Open source is bad for business, saysMicrosoft Linux is a cancer 2005 Enterprise Library 1.0 re ...

随机推荐

  1. Linux命令-文件搜索命令:whereis

    主要用途:查找linu命令,而不是磁盘上的普通文件,并且能看到命令的目录和帮助文件. whereis useradd 查找命令useradd的所在位置,同时还查出来它的帮助文件所在位置 whereis ...

  2. HDU 1695 GCD(容斥定理)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  3. SortedDictionary<TKey,TValue>正序与反序排序及Dicttionary相关

    SortedDictionary<TKey,TValue>能对字典排序 using System; using System.Collections.Generic; using Syst ...

  4. java开发中国际化

    1 静态文本的国际化,就是比如页面中中文显示用户名就是用户名,用于显示就是 username. 其中静态文件命名遵循:基础名_语言简称_国家简称.properties 需要使用的类是 1)import ...

  5. centos-7 charpter one

    一.system locale 的介绍: 系统的区域设置被保存在/etc/locale.conf 这个文件中,systemd在启动的时候会去读取它:所有用户和程序的区域设置都继承自它, 当然用户&am ...

  6. Spring Cloud(四):熔断器Hystrix

    熔断器 雪崩效应 在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个系统不可用的情况,这种现象被称为服务雪崩效应.服务雪崩效应是一种因“服务提供者”的不可用导致“服务 ...

  7. AESDK从流中获得变换信息

    AE中Transform下的信息位于流中,和别的软件不太一样. 如果是特效的参数信息要从EffectSuites中获取,默认的参数信息基本上StreamSuites都可以得到 需要注意,取得流之后也要 ...

  8. Atitit. 解释器模式框架选型 and应用场景attilax总结 oao

    Atitit. 解释器模式框架选型 and应用场景attilax总结 oao 1. 解释器模式结构描述 1 2. 如何实现(简单的解释器模式,仅仅通过词法分析即可实现,而无需token流进行处理. 2 ...

  9. Xilinx-7Series-FPGA高速收发器使用学习—TX发送端介绍

    每一个收发器拥有一个独立的发送端,发送端有PMA(Physical Media Attachment,物理媒介适配层)和PCS(PhysicalCoding Sublayer,物理编码子层)组成,其中 ...

  10. CentOS安装使用git

    yum install git yum install git-gui (可选) git config --global user.name "gg" git config --g ...