SDL检查
在用 Visual Studio 编译比较早的代码时,经常会遇到错误:
错误 C4996 'wcscpy': This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. BcpService e:\c800\pc\src\bcpservice\createindex.cpp 22
警告 C4200 使用了非标准扩展: 结构/联合中的零大小数组 BcpService e:\c800\pc\src\bcpservice\libusb.h 738
错误 C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. BcpService e:\c800\pc\src\bcpservice\creatbcpfile.cpp 534
等。。。
在项目属性中关闭SDL检查后就可以解决该问题。
当然,最好是修改代码,使用错误提示中的修改。
但是某些情况下代码不允许修改,就需要关闭SDL检查。
什么是SDL检查
微软正在积极开发的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 |
/we4146 |
A unary minus operator was applied to an unsigned type, resulting in an unsigned result |
|
/we4308 |
A negative integral constant converted to unsigned type, resulting in a possibly meaningless result |
|
/we4532 |
Use of “continue”, “break” or “goto” keywords in a __finally/finally block has undefined behavior during abnormal termination |
|
/we4533 |
Code initializing a variable will not be executed |
|
/we4700 |
Use of an uninitialized local variable |
|
/we4789 |
Buffer overrun when specific C run-time (CRT) functions are used |
|
/we4995 |
Use of a function marked with pragma deprecated |
|
/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://blog.csdn.net/itcastcpp/article/details/7069915
SDL检查的更多相关文章
- 【转】VS 安全开发生命周期(SDL)检查
前面在学习使用google的protobuf时在VS2012中一直无法编译编译通过,经过查找一些资料原来发现,并不是protobuf的问题,而是自己在使用VS2012时,没有完全了解VS2012的强大 ...
- VS2015使用scanf报错的解决方案
1.在程序最前面加: #define _CRT_SECURE_NO_DEPRECATE 2.在程序最前面加: #pragma warning(disable:4996) 3.把scanf改为scanf ...
- 1 error C4996: 'pcl::SAC_SAMPLE_SIZE':
使用PCL1.8 中使用粗配准拼接 错误 1 error C4996: 'pcl::SAC_SAMPLE_SIZE': This map is deprecated and is kept onl ...
- VS2013使用winsock.h和winsock2.h发生冲突后的终极解决方法
问题:彻底无语了,不小心某个文件包含了windows.h头文件,而windows.h文件里面包含着winsock.h文件, 如果你下次使用winsock2.h文件时,位置不对,然后编译器会给你一大堆重 ...
- C语言杂谈(一)scanf()、scanf_s()与错误 C4996
错误 C4996 初学C语言时,第一个接触到的I/O函数便是scanf()了.但在高版本的 Visual Studio (包括但不限于2015.2013.2012)编译代码时,却会出现意想不到的错误. ...
- VS2015使用scanf报错解决方案
版权声明:本文为博主原创文章,未经博主允许不得转载. 方法一:在程序最前面加#define _CRT_SECURE_NO_DEPRECATE: 方法二:在程序最前面加#define _CRT_SECU ...
- 基于UDP协议的控制台聊天程序(c++版)
本博客由Rcchio原创,转载请告知作者 ------------------------------------------------------------------------------- ...
- Windows API编程(SDK编程)配置VS2017——出现LNK 2019错误的win32项目如何解决
最近刚入门SDK编程,在 我终于知道为什么windowsApi学的人这么少了 这篇文章中,确实发现了这样的问题,我的教程使用VS2013->Windows桌面->win32,就诞生了能使用 ...
- VC++调试错误的解决方案
这篇文章主要用来记录使用Visual Studio过程中,出现的各种error,并提供自己当时解决的方案.但是,一个error可能由不用原因引起的,文中案例仅供大家参考. nafxcwd.lib(th ...
随机推荐
- redhat6.4 elasticsearch1.7.3安装配置
利用elasticsearch管理集群索引, 今天刚好需要重新调整elasticsearch的最大内存, 所以自己安装了练手 附件: elasticsearch 附件:elasticsearch-he ...
- 20145314郑凯杰《网络对抗技术》实验9 web安全基础实践
20145314郑凯杰<网络对抗技术>实验9 web安全基础实践 一.实验准备 1.0 实验目标和内容 Web前端HTML.能正常安装.启停Apache.理解HTML,理解表单,理解GET ...
- Android实践项目汇报-改(一)
Google天气客户端NABC Need(需求): 功能性需求分析 天气预报客户端,顾名思义就是为用户提供实时准确的天气信息,方便用户出行生活.根据用户日常需求,软件完成后点开,载入界面,显示查询界 ...
- Windows中的时间(SYSTEMTIME和FILETIME) (转载)
转载:http://blog.csdn.net/bokee/article/details/5330791 两种时间系统之间没有本质区别(事实上CRT时间是用Windows时间实现的,当然这是说的VC ...
- 如何修改ls命令列出来的目录颜色
答:默认为蓝色,在黑色背景下无法看清楚,因此以以下方法修改; 1.往~/.bash_profile文件中添加以下内容: export LS_COLORS='no=00:fi=00:di=01;33:l ...
- [loss]Triphard loss优雅的写法
之前一直自己手写各种triphard,triplet损失函数, 写的比较暴力,然后今天一个学长给我在github上看了一个别人的triphard的写法,一开始没看懂,用的pytorch函数没怎么见过, ...
- .Net页面局部更新的思考
最近在修改以前做的模块,添加一个新功能.整理了下才发现重用率很低,大部分的东西还是需要重新写.功能里用到了局部更新,所有整理一下一路来实现局部更新的解决方案及改进. 我接触的项目开发大多是以Asp.n ...
- 【TCP/IP详解 卷一:协议】第二十章 TCP的成块数据流
本章节主要内容: ACK的累积 滑动窗口协议(即 接收方TCP数据报缓存的大小) 流量控制(慢启动 -发送方TCP的 拥塞窗口(cwnd) 以及接受方的 通告窗口) 20.1 引言 在教材的之前章节中 ...
- BZOJ 3992 【SDOI2015】 序列统计
题目链接:序列统计 我来复习板子了……这道题也是我写的第一发求原根啊? 求原根方法: 从小到大依次枚举原根.设当前枚举的原根为\(x\),模数为\(p\),\(p-1\)的质因数分别为\(p_1,p_ ...
- Linux——文件处理命令简单学习总结
linux中一共有三种用户: 1: 所有者u(User) 2: 所属组g(group) 3: 其他用户o(other) linux中权限一共分三种: 1: r read 读权限 2: w write ...