微软正在积极开发的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的额外资源。
分享到:
相关推荐
Visual Studio 2012是微软在2012年发布的一代开发工具,它包含了多个版本的Visual C++ Redistributable,以支持不同的更新和功能。"Update 4"是该版本的一个重要更新,修复了之前版本中的一些问题,并添加了新的功能...
《Intel C++ 编译器Windows版》(Intel.C.Plus.Plus.Compiler.v10.0.026)[Bin] 软件版权归原作者及原软件公司所有,如果你喜欢,请购买正版软件 常驻服务器 : DonkeyServer No2, 7x24, 根据工作需要暂停 [版本说明] ...
微软今天发布了下一代Visual Studio的首个社区技术预览版(CTP),代号为Visual Studio 14,将于2015年正式发布,外界猜测其正式命名可能是Visual Studio 2015。 Visual Studio“14”社区技术预览版发布 今天发布的...
本文主要针对Visual C++ 6.0版本在Windows 8和10操作系统上的安装与使用进行详细阐述,帮助开发者在新一代操作系统上充分利用这一经典工具。 1. **Visual C++ 6.0概述** Visual C++ 6.0是一款集成开发环境,它集成...
在 Windows* 平台上,它们与 Microsoft Visual Studio* 2008、2010 和下一代工具兼容。在 Linux* 平台上,它们与 GNU* 工具兼容。 多种操作系统支持,多种语言支持 英特尔® Parallel Studio XE 可用于 Windows*,...
然而,值得注意的是,Visual C++ 6.0也有一些局限性,例如对现代C++标准的支持不足,不包含对C++11及以上版本的新特性的支持,以及安全性方面的考虑,比如对缓冲区溢出等问题的防护不足。因此,在开发新的项目时,...
Visual Studio 2015是一款由微软开发的集成开发环境(IDE),广泛用于Windows平台上的C++项目开发。本篇将详细介绍如何在Visual Studio 2015环境下编译x265源码。 1. **HEVC编码标准** HEVC是继H.264之后的下一代...
这个压缩包文件的内容似乎是一个关于在Windows 10版本21H2、Visual Studio 2022以及Windows 11版本22H2环境下开发驱动程序的示例项目,名为"MyDriver1"。 首先,我们来详细了解下这些关键组件: 1. **Windows 10 ...
- **Visual C++ Compiler Update**:8.1版更新了C++编译器,支持C++11标准,提升了性能和兼容性。 - **Windows Store App Development**:对Windows Store应用的开发环境进行了优化,增加了Live Tiles和通知服务的...
《Visual C++ 6.0在Windows 7系统下的应用详解》 Visual C++ 6.0是一款由Microsoft公司推出的经典编程环境,尤其对于初学者和老程序员来说,它具有极高的价值。这款IDE(集成开发环境)在当时是C++编程的主流工具,...
VC2010是微软推出的下一代C++编译器,支持C++11标准的部分特性,如自动类型推断(auto关键字)、右值引用(Rvalue References)和lambda表达式。同时,它提供了对.NET Framework 4的支持。这个版本的运行时库对于...
6. **SSPI**:通过SSPI支持多种安全认证机制,增强了安全性。 7. **Schannel**:使用Windows内置的Schannel作为SSL/TLS实现,确保了加密连接的安全。 8. **预编译对象文件**:提供了预编译的对象文件,便于开发者...
这款工具在20世纪末至21世纪初,是Windows平台下C++开发的标准之一,其稳定性和高效性使其成为当时许多软件开发项目的首选。 一、虚拟化C++ 6.0概述 VC6的全称是Microsoft Visual C++ 6.0,它集成了编译器、调试器...
《OpenSource libssh2-1.10.0在Visual Studio 2022环境下的应用与实践》 libssh2是一个开源的SSH2客户端库,它为开发者提供了实现SSH2协议所需的各种功能,包括安全的远程登录、文件传输、隧道创建等。版本1.10.0是...
11. C++编译器和开发环境:C++程序通常需要一个编译器来编译成机器码,Microsoft Visual C++、GNU g++、Borland C++、Metrowerks CodeWarrior等都是流行的C++编译器。开发环境如Visual Studio、CodeWarrior、Eclipse...
10. **现代替代品**:尽管Turbo C++ 3.0在教学和学习过程中有其价值,但现代开发中推荐使用如Microsoft Visual Studio、Code::Blocks、GCC或Clang等更现代的IDE和编译器,它们不仅支持最新的C++标准,还具有更强大的...
1. **C++11/14/17标准支持**:新版本的Visual Studio支持最新的C++标准,提供了更多的语言特性和库功能。 2. **更好的代码编辑和导航**:现代IDE提供了智能感知、代码重构和代码导航等工具,提高编写代码的效率。 ...
Windows Borland C++,通常被称为Win-TC,是在这个背景下诞生的,它是Borland为Windows操作系统专门定制的C++开发工具。它的出现,使得程序员能够在Windows环境下进行C++程序的编写、调试和构建,极大地推动了...
- **背景介绍:** 2000年6月22日,微软宣布了其下一代计算平台——.NET,这标志着互联网时代的软件开发进入了一个全新的阶段。 - **.NET的概念:** .NET是一个开放的、综合性的平台,它支持多种编程语言,并通过...