【转】VS 安全开发生命周期(SDL)检查

前面在学习使用google的protobuf时在VS2012中一直无法编译编译通过,经过查找一些资料原来发现,并不是protobuf的问题,而是自己在使用VS2012时,没有完全了解VS2012的强大功能,和跟以前VS2010的差别,导致无法编译通过。

现在就来说说为什么没有编译通过,在VS2012创建项目时,会有一个勾选项,叫做“安全开发生命周期(SDL)检查”,这个东西是微软在VS2012新推出的东西,为了是能更好的监管开发者的代码安全,如果勾选上这一项,那么他将严格按照SDL的规则编译代码,会有一些以前常用的函数无法通过编译,比如在VS2010中的scanf是warning那么在VS2012中就是error了。

查看MSDN中对SDL的描述,SDL检查会视以下告警为错误:

/sdl 启用警告

等效的命令行开关

描述

C4146

/we4146

一元负运算符应用于无符号类型,从而导致无符号结果。

C4308

/we4308

一个负整型常数转换为无符号类型,从而导致一个可能无意义结果。

C4532

/we4532

__finally /finally中的关键词,使用continue, break 或 goto在异常终止块未定义行为。

C4533

/we4533

初始化变量的代码不会执行。

C4700

/we4700

使用未初始化的局部变量。

C4703

/we4703

对一个潜在的未初始化的局部指针变量的使用。

C4789

/we4789

当使用时,请缓冲区溢出特定 C 运行时 (CRT) 函数。

C4995

/we4995

使用函数的标deprecated。

C4996

/we4996

使用函数的标记作为deprecated。

也就是在编译的时候,当SDL检查启用时,编译器会严格检测缓冲区的溢出,并且会在delete某个指针时,自动为这个指针定义一个非有效的值,防止在delete以后仍用到这个指针时出错。还有就是会在你定义一个对象时,自动为这个对象赋值零。

从这些功能来看,有些功能还是不错的,不但方便了程序员使用也增强了程序的健壮性,但是对老版本程序的兼容就会出现问题,以前程序中编译通过的内容也许在VS2012中就没有办法通过,还是大家根据自己的习惯自行考虑是否使用这个东西吧。

另:还有一个选择打开和关闭SDL检查的位置就是:项目属性->配置属性->C/C++->SDL检查,选测是或者否

转自:http://blog.csdn.net/angle635/article/details/22035427

posted on 2018-02-11 09:47 时空观察者9号 阅读(...) 评论(...) 编辑 收藏

【转】VS 安全开发生命周期(SDL)检查相关推荐

  1. 【应用安全】微软的安全开发生命周期(SDL)

    [应用安全]微软的安全开发生命周期(SDL) 0x01 SDL介绍 安全开发生命周期(SDL)即Security Development Lifecycle,是一个帮助开发人员构建更安全的软件和解决安 ...

  2. SDL介绍----4、S-SDLC安全开发生命周期

    文章目录 一.S-SDLC 二. S-SDLC流程 三.S-SDLC项目流程 一.S-SDLC OWASP Secure Software Development Lifecycle Project( ...

  3. 软件安全开发生命周期-基础理论

    一.SDL简介 SDL security development lifecycle(安全开发生命周期),是微软提出的从安全角度指导软件开发过程的管理模式.SDL是一个安全保证的过程,起重点是软件开发 ...

  4. 在软件开发生命周期中使用应用程序验证器

    转自https://msdn.microsoft.com/zh-cn/library/aa480483.aspx#EHAA 发布日期 : 2006-6-5 | 更新日期 : 2006-6-5 摘要 M ...

  5. 【应用安全】S-SDLC安全开发生命周期

    0x01 S-SDLC简介 OWASP Secure Software Development Lifecycle Project(S-SDLC)是OWASP组织首个由OWASP中国团队独立发布并主导 ...

  6. 移动开发的软件开发生命周期介绍(二)

    Stabilization--稳定期 Stabilization is the process of working out the bugs in your app. Not just from a ...

  7. 移动应用程序开发_移动应用程序开发生命周期-从开发到应用程序商店的应用程序之旅

    移动应用程序开发 Lately, app stores have witnessed a meteoric rise in the number of apps available to them. ...

  8. 软件安全开发生命周期(SSDL)全景图

    对于软件安全研发过程,不同的项目会采用不同的过程模型,使用不同的工具,会有不同的门控要求及不同的输出物,下面简单介绍下我所理解的软件安全开发过程 一.软件安全开发全景图 首先我们先根据软件开发生命周期 ...

  9. 在软件开发生命周期中的安全性

    本文介绍了CLASP,一个应用软件安全性过程和对Rational统一过程(RUP)的插件,由Secure Software开发的环境.CLASP提供给组织一种结构化的方法,在软件开发生命周期过程中处理 ...

最新文章

  1. 通过例子10分钟快速看懂pad_sequence、pack_padded_sequence以及pad_packed_sequence
  2. JavaScript为unicode编码转换为中文
  3. linux怎么用两个进程传值,linux下的C开发14,可执行程序如何传递参数?模拟shell执行命令...
  4. Push代码:Git@github.com: Permission denied (publickey)
  5. 文件上传下载流程设计
  6. [转载] C#面向对象设计模式纵横谈——7. Adapter适配器模式
  7. 使用std::function 把类成员函数指针转换为普通函数指针
  8. Java多线程之Runable与Thread
  9. Lesson 3 Part 2 logistic regression
  10. WINDOWS NT/2000下如何屏蔽CTRL+ALT+DEL
  11. win7 兼容 因特尔十代_高配主板想用win7咋办 Intel10代CPU配上驱动总裁玩转win7
  12. 如何成为一名汽车软件工程师?
  13. 微信小程序的图片上传及图片预览功能
  14. 英文网站源码 国外财经资讯商业新闻整站源码 全自动采集发布 广告联盟网站
  15. 加密word文档脱壳教程
  16. PNP三极管限流电路分析
  17. MATLAB识别实验,基于MATLAB的图像识别
  18. ubuntu 18.04安装 远程控制软件 TeamViewer 亲测有效简单
  19. check异常和uncheck异常的区别b
  20. 《非常网管:网络管理从入门到精通(修订版)》一1.1 计算机网络基础

热门文章

  1. 笔记-信息系统安全管理-《信息安全等级保护管理办法》
  2. Java中怎样遍历两个Date日期之间的每一天
  3. php表单复选传值,jQuery+SpringMVC中的复选框选择与传值实例_jquery
  4. matlab遗传算法无人机问题,基于改进遗传算法的无人机路径规划
  5. 神策数据如何助力36氪实现数据运营?
  6. java8升级java11到底敢不敢?
  7. 教你如何将自己的脚本代码放到服务器上运行
  8. 把字符串每隔四个字符使用“-”中横线分隔的方法
  9. SCN试验之二 checkpoin scn 与数据库scn的关系
  10. QTP的那些事---通过html标签的属性获取对象(类似onclick的属性)