在Visual Studio11编译器的安全性增强-下一代Visual C++2012的新特性

分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

(注 - 这个博客帖子描述了一个在未发布的产品的功能,此功能可能会改变最终产品发布之前。)

微软正在积极开发的Visual Studio11,不断寻找方法,以提高安全相关的功能。作为这项工作的一部分,我们正在更新一些增强/ GS编译器开关,这是默认,使基层的代码生成的安全功能,超越了现在熟悉的基于cookie的堆栈溢出保护。这些在以后的文章,我们将提供一些细节。

安全开发生命周期(SDL)/ GS编译器能协助安全软件开发的范围之外的建议。这些从具体的代码生成功能,如使用安全相关的编译器警告和更多的一般性建议适当初始化或消毒指针strict_gs_check范围。

这是第一次,我们希望能提供一个中央机制,使这些额外的安全性支持通过一个新的/ SDL开关。 / SDL的影响是双重的:

- / SDL SDL强制编译器警告是在编译过程中的错误处理。

- / SDL使额外的代码生成功能,如增加了栈缓冲区溢出保护和指针初始化或消毒,在有限的一套明确界定的情况下的范围。

这种双管齐下的办法,反映了我们的信念,安全软件是最好的实现相结合的检测,并固定在开发过程中代码中的错误与安全缓解的部署,将显着增加难以利用任何剩余的错误。

/ SDL的编译器开关默认是禁用的,并且可以在Visual Studio的用户界面,轻松地打开当前项目的属性页,并访问配置属性 - > C / C ++ - >常规选项启用。

那么,是什么/ SDL开关吗?

使一切都包含在/ GS/ SDL开关启用的功能是启用/ GS即启用/ SDL的一个超集。我们将提供更多的背景和额外的/ GS/ SDL在未来职位的特点,在深入细节。现在,我们注意到,它们包括:

启用下列SDL强制编译器警告视为错误:

Warning


Command line switch


Description


C4146


/we4146


A unary minus operator was applied to an unsigned type, resulting in an unsigned result


C4308


/we4308


A negative integral constant converted to unsigned type, resulting in a possibly meaningless result


C4532


/we4532


Use of “continue”, “break” or “goto” keywords in a __finally/finally block has undefined behavior during abnormal termination


C4533


/we4533


Code initializing a variable will not be executed


C4700


/we4700


Use of an uninitialized local variable


C4789


/we4789


Buffer overrun when specific C run-time (CRT) functions are used


C4995


/we4995


Use of a function marked with pragma deprecated


C4996


/we4996


Use of a function marked as deprecated

一个开发人员如想以选择大部分的/ SDL的功能,但排除一个给定的警告编号(假设为例C4146)然后这可以通过在/ WD开关以禁用彗星/彗星++下,具体警告实现 - >命令行 - >附加选项在Visual Studio的用户界面:

strict_gs_check pragma是适用于所有的C/ C + +代码编译/ SDL。这指示编译器将考虑作为潜在的堆栈缓冲区溢出保护候选人更多的功能。 Visual Studio 2010中引入的GS优化得到了提高strict_gs_check一起更好地工作,特别是使许多额外的安全检查从strict_gs_check被证明是不必要的和删除。

附加/ SDL代码生成功能,将在以后的职位更详细的覆盖。

Microsoft强烈建议使用/ GS开关,因为在以往的Visual Studio版本,在Visual Studio11新/ SDL开关提供更大的保障覆盖面的机会,期间和之后发展:停留在特定的安全利益,使用/ GS的更多细节调整在Visual Studio11和/ SDL。

当然,安全性开发生命周期(SDL)是一个完整的过程和开发安全的软件,这样的方法,包括远远高于只使用特定的编译器开关 - 阅读更多查找到SDL的额外资源。

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net

原文地址:https://www.cnblogs.com/wicnwicnwh/p/10494992.html

时间: 2024-10-03 03:11:49

在Visual Studio11编译器的安全性增强-下一代Visual C++2012的新特性的相关文章

Visual C++ 编译器自动假定带 .C 扩展名的文件是 C 文件而不是 C++ 文件,并且拒绝 C++ 语法和关键字(c语言只能在大括号最前面申明变量)

今天在编译OpenGL红宝书附带源码中的light.c文件时遇到一个诡异的问题: 如图light .c,在不做任何修改的情况编译OK.然而只要在某些地方写了可执行代码,则会无法通过编译器编译! (这几行代码如果写在main函数里的第一句则OK) 我用的VS08.我把该文件发给其他朋友(用的VS10),同样也是这样的问题. 然而,我把文件名改成light.cpp后,问题解决了. 现在的问题是,代码文件按的后缀背后,会如何影响编辑器的编译呢? 可以做一个简单的测试: [cpp] view plain

Visual studio编译器窗口重置

针对vs2003: 第一种方法 在"工具"->"选项"对话框里面: 在"选项"下面的"常规"有个"重置窗口布局"按钮. 第二种方法 把 Documents   and   Settings\用户名\Application   Data\Microsoft\VisualStudio\7.1 下的所有文件都删除,然后重新开vs2003   OK: Visual studio编译器窗口重置

QtCreator (Visual C++ 编译器)编译时提示 warning C4819 的解决办法

用 QtCreator + Visual C++ 编译器 编译程序时经常会出现类似的警告. warning C4819: 该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 Unicode 格式以防止数据丢失 这个警告我们可以忽略,但是编译大一点的项目时经常会提示几十个这样的警告,也挺烦人的. 其实解决办法也很简单,将我们的代码保存为 utf-8 带 BOM 格式的文件就可以了.QtCreator 保存文件默认是 utf-8 格式的,但是不带 BOM. 我们可以修改一下设置,让它

Visual C++ 编译器选项/MD、/ML、/MT、/LD

前段时间编译一个引用自己写的静态库的程序时老是出现链接时的多个重定义的错误,而自己的代码明明没有重定义这些东西,譬如:LIBCMT.lib(_file.obj) : error LNK2005: ___initstdio already defined in libc.lib(_file.obj)LIBCMT.lib(_file.obj) : error LNK2005: ___endstdio already defined in libc.lib(_file.obj)LIBCMT.lib(_

基于Windows8与Visual Studio11开发第一个USB内核驱动程序

分享一下我老师大神的人工智能教程吧.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net USB ,是英文Universal Serial BUS(通用串行总线)的缩写,而其中文简称为“通串线,是一个外部总线标准,用于规范电脑与外部设备的连接和通讯.是应用在PC领域的接口技术.USB接口支持设备的即插即用和热插拔功能.USB是在1994年底由英特尔.康柏.IBM.Microsoft等多家公司联合提出的. 从1994年11

Visual Studio 2015 RC中的ASP.NET新特性和问题修正

(此文章同时发表在本人微信公众号"dotNET每日精华文章") 微软在Build大会上发布了Visual Studio 2015 RC,这也预示着Visual Studio 2015及其背后框架的功能特性已经确定,我们也可以来看看和之前的CTP到底有什么区别. 在Build大会宣布发布Visual Studio 2015 RC之后,微软的Web开发和工具团队在其博客上发表了一篇介绍Visual Studio 2015 RC新特性和问题修正的文章.同VS2015 RC伴随发布的是.NET

微软讲座视频: 下一代vNext平台:ASP.NET vNext与MVC6,WebAPI 3.0 新特性 下载

 微软下一代平台vNext: .NET 5.0.ASP.NET vNext与MVC6,WebAPI 3.0 新特性 录像视频下载 http://t.cn/RPYhcuG  微软与开源实战训练营QQ群 203822816 微软MSDN俱乐部QQ群 29754721, 微软MSDN特邀讲师:徐雷  Frank Xu Lei倾力打造!新浪微博:http://weibo.com/frankxulei  @@老徐FrankXuLei 系统讲解NET vNext 新特性ASP.NET vNext新特性,

Visual Studio 2015与C#6.0新特性

Visual Studio 2015与C#6.0新特性 更多发现  admin  9个月前 (07-20)  4339浏览 今天,我们很高兴宣布下一代开发工具Visual Studio 2015的新特性,新的改进包括:支持跨平台的C++开发.新开源的.NET编译平台.C++11和C++14的支持,集成Apache的Cordova跨平台移动开发工具和ASP.NET5新框架,这些改进有大有小,零度在此摘录Visual Studio 2015在C#开发方面的新特性. 1.使用null条件运算符,在调用

微软讲座视频: 微软下一代vNext平台:ASP.NET vNext与MVC6,WebAPI 3.0 新特性

微软下一代平台vNext: .NET 5.0.ASP.NET vNext与MVC6,WebAPI 3.0 新特性 录像视频下载 http://t.cn/RPYhcuG  微软与开源实战训练营QQ群 203822816 微软MSDN俱乐部QQ群 29754721, 微软MSDN特邀讲师:徐雷  Frank Xu Lei倾力打造!新浪微博:http://weibo.com/frankxulei  @@老徐FrankXuLei 讲课系统NET vNext 新特性ASP.NET vNext新特性, MV