(注 - 这个博客帖子描述了一个在未发布的产品的功能,此功能可能会改变最终产品发布之前。)
微软正在积极开发的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的额外资源。
分享到:
相关推荐
Microsoft visual c++2008 编译器很好用的 Microsoft visual c++2008 编译器很好用的 Microsoft visual c++2008 编译器很好用的
Visual C++ Redistributable for Visual Studio 2012 安装说明:下载 .exe 文件: 在此页上,选择“下载”按钮。 若要立即安装此软件,请选择“运行”按钮。 若要稍后安装此软件,请选择“保存”按钮。
Visual Studio 可以用于生成 Web 应用程序,也可以生成桌面应用程序,在 Visual Studio 下面,除了 VC,还有 Visual C#,Visual Basic,过去还有Visual J#,现在还有 Visual F#等等组件工具,使用这些工具你可以使用...
Visual C++ Redistributable for Visual Studio 2015 Visual C++ Redistributable for Visual Studio 2015
最新版 mysql-for-visualstudio-1.2.8.msi. mysql数据库连接visualstudio,
Visual Studio.NET编译器的内部原理和Visual Studio.NET应用程序的组成部分
Visual C++ Redistributable for Visual Studio 2012 U4_x86
最新版 mysql-for-visualstudio-1.2.9.msi. mysql数据库连接visualstudio,
Visual Studio 2013新特性体验
Visual Studio Shell推出有一定的...虽然基于VisualStudio的插件本身并不少,但是基于VisualStudio Shell独立模式的比较强大的例子并不是很多,一个比较给力的实例还是微软自己推出的Python Tools for Visual Studio。
适用于C++/C语言初学者相关代码的开发,本软件无需安装,下载解压后,只需在Microsoft Visual Studio\Common\MSDev98\Bin目录下找到MSDEV.EXE运行文件,双击运行即可。
matlab在关联编译器的时候 会出现找不到编译器的问题 原因是matlab要找windows sdk的mt exe 本文件修改方法也是根据wiills的那篇“matlab找不到编译器的问题”(matlab无法找到vs2012)的修改方法进行的 请参考:...
Visual Studio 2012 MSDN离线包下载助手 Visual Studio Help Downloader 2012 VisualStudioHelpDownloader2012 v1.0.0.0 Beta.zip
Visual C++ Redistributable Packages for Visual Studio 2013
Visual C++ Redistributable for Visual Studio 2015.rar
建立一个单文档界面应用程序SDI、多文档应用程序、基于对话框的应用框程序、
这个完全免费的软件,有些软件必须有这个才能运行,无任何版权问题。 也可以直接去微软网站下载链接: https://visualstudio.microsoft.com/zh-hans/downloads/
VS2010增强工具包,包含pack1和pack2,一个补丁,还有一个强悍的生产工具。安装包之前先打那个补丁。 在MSDN要钱的,呵呵。feature pack安装之前打的补丁 文件名如下: feature pack安装之前打的补丁VS10-KB2403277-...
Visual C++ Redistributable Packages for Visual Studio 2013.zip //MYSQL5.7需要这个环境。