CRT中的安全功能

Visual Studio 2012
其他版本

此主题尚未评级 - 评价此主题

许多旧 CRT 函数具有较新,更安全版本。 如果一个安全功能存在,旧,较不安全版本标记为已弃用,并新版本具有 _s (“安全”) 后缀。

在此上下文中, “已否决”意味着不建议使用函数;它不指示功能安排从 CRT 中移除。

安全功能不阻止或右边的安全错误;相反,那么,当事件发生时,他们将无法看到错误。 它们执行进一步的检查错误状态,并且,对于错误,它们调用错误处理程序 (请参见 参数验证)。

例如, strcpy 功能无法调用字符串复制它是否为其目标缓冲区太大。 但是,其安全副本, strcpy_s,采用缓冲区的大小作为参数,因此,它可以确定缓冲区溢出是否将导致。如果使用 strcpy_s 复制为一个字符为十六进制字符缓冲区,这是在部分的错误; strcpy_s 不能更正此错误,但是,它可以检测该错误并将调用无效参数处理程序通知您。

消除否决警告。


可通过多种方式消除早期,不够安全功能的否决警告。 最简单的形式是定义 _CRT_SECURE_NO_WARNINGS 或使用 警告 说明。 用于将禁用否决警告,当然,但安全问题导致警告仍存在。 将否决警告启用和利用新的 CRT 安全功能最好。

在 C++ 中,是使用的最简单的方法执行 安全模板重载,将通过替换在许多情况下消除否决警告调用弃用的功能与调用这些功能的新版本。 例如,请考虑此弃用的调用strcpy:

   char szBuf[10]; strcpy(szBuf, "test"); // warning: deprecated

定义 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 为 1 通过更改 strcpy 消除该警告调用 strcpy_s,避免缓冲区溢出。有关更多信息,请参见 安全模板重载。

对于没有安全模板重载的那些已弃用的功能,则应显式考虑手动更新代码使用安全版本。

否决警告的另一个源,不相关与安全,是 POSIX 功能。使用它们的标准等效替换 POSIX 函数名称 (例如,若要 _access的更改 访问 ),或者通过定义_CRT_NONSTDC_NO_WARNINGS禁用 POSIX 相关的否决警告。有关更多信息,请参见 Deprecated CRT Functions。

其他安全功能


某些安全功能包括:

  • Parameter Validation . 参数传递给 CRT 函数在两个验证,获取函数和函数中的许多预先存在的版本。 这些验证包括:

    • 检查 NULL 值传递给函数。

    • 检查枚举值的有效性。

    • 检查整数值在有效范围内。

  • 有关更多信息,请参见 参数验证。

  • 无效参数的处理程序对开发人员也是可访问的。 当遇到无效参数,而不是断言并退出应用程序, CRT 时提供一种检查 _set_invalid_parameter_handler 的这些问题函数。

  • Sized Buffers . 安全功能需要缓冲区大小向该的所有功能到缓冲区中编写。 安全版本验证缓冲区中编写足以对之前,有助于避免风险缓冲区溢出可以使恶意代码执行的错误。 ,如果缓冲区的大小太小,这些函数通常返回错误代码的 errno 类型并调用无效参数处理程序。 从输入缓冲区读取,例如 gets的功能,但需要指定最大大小的安全版本。

  • Null termination . 保留而非终止的字符串的某些函数具有相应的安全版本正确 null 终止的字符串。

  • Enhanced error reporting . 安全功能比预先存在的函数返回与多个错误信息的错误代码可用。 安全功能和许多预先存在的功能现在设置的 errno 和通常返回 errno代码类型,可提供更好的错误报告。

  • Filesystem security . 获取文件 I/O API 支持获取在默认情况下的文件访问。

  • Windows security . 保护处理 API 强制安全策略并允许指定 ACL。

  • Format string syntax checking . 使用错误类型在printf 格式字符串的字段,字符无效字符串被检测,例如,。

解决 Visual C++ 2012 C Runtime wannring and error相关推荐

  1. 在Visual Studio 2012中使用VMSDK开发领域特定语言(二)

    本文为<在Visual Studio 2012中使用VMSDK开发领域特定语言>专题文章的第二部分,在这部分内容中,将以实际应用为例,介绍开发DSL的主要步骤,包括设计.定制.调试.发布以 ...

  2. vs2012 visual studio 2012安装失败管道正在关闭解决方法

    vs2012 visual studio 2012旗舰版安装失败管道正在关闭解决方法win7专业版旗舰版 安装包不对,正确的安装包如下供参考 ed2k://%7Cfile%7Ccn_visual_st ...

  3. 微软Visual Studio 2012软件功能介绍

    对于从事.net程序开发的我们,都要用到C#依附的Visual Studio平台!Visual Studio是目前最流行的Windows平台应用程序开发环境.最新版本为 Visual Studio 2 ...

  4. DIY 一套正版、免费、强大的 Visual Studio 2012 IDE

    作为开发软件的程序员,应在力所能及的情况下使用正版软件.最近一直在用VisualStudio 2012 Express Desktop/Web 版本开发项目.VisualStudio 2012 Exp ...

  5. 在Visual Studio 2012中使用VMSDK开发领域特定语言(一)

    前言 本专题主要介绍在Visual Studio 2012中使用Visualization & Modeling SDK进行领域特定语言(DSL)的开发,包括两个部分的内容.在第一部分中,将对 ...

  6. 微软发布Visual Studio 2012 示例代码浏览器

    示例代码对于开发人员的重要性是不言而喻的.很多程序员往往通过示例代码着手学习一门技术.当开发人员遇到编码困难时也往往希望得到示例代码来解决疑难杂症.示例代码可谓是开发人员的良师益友,为程序员的学习和工 ...

  7. Visual Studio 2012 Update 4 RC 启动调试失败解决方案

    以下解决办法适用于任何Visual Studio开发环境,及Windows NT 6.1以上系统. 系统:Windows 8.1 Enterprise x64 RTM 开发环境:Visual Stud ...

  8. vs2012建立java,在Microsoft Visual Studio 2012中使用Java

    我最初是一名C ++程序员,Visual Studio曾为我工作过.但是,最近我想扩展到C#和Java.Visual Studio支持C#,我现在有一些使用它的经验,但是它不支持Java.有人对我有任 ...

  9. visual studio 2012 下配置OPENcv3.1 和CMAKE问题总结

    visual studio 2012 下配置OPENcv3.1 和CMAKE问题总结 作为一个CMAKE的新手,在搭建环境的时候确实废了很多功夫,所以总结一下自己的过程,希望队大家有所帮助. 在开始之 ...

最新文章

  1. Tomcat 跨域问题的解决
  2. 工业互联网 — TSN — Overview
  3. oracle siplugincol表,ORACLE 经常使用的命令工具-第三章:表
  4. leetcode算法题--石子游戏 II★★
  5. 勘误《iOS网络高级编程:iPhone和iPad的企业应用开发》
  6. 转:思科3750交换机堆叠技术配置向导
  7. Java JDK 学习笔记:File类
  8. UA MATH564 概率论IV 次序统计量例题3
  9. 神州英才战略盈利竞争力总结
  10. makefile总结(转载学习)
  11. Python要点总结,我使用了100个小例子!
  12. javascript (BOM DOM)
  13. 【工具】之搭建个人博客
  14. kaldi运行thchs30例子
  15. VMware清理vmdk文件
  16. python学生成绩排序_学生成绩排序基础算法笔记
  17. 14个程序员常去的外国网站
  18. HTML5 canvas 240行代码实现粒子漩涡特效
  19. 〖全域运营实战白宝书 - 运营角色认知篇①〗- 初识运营,明晰运营的学习路径
  20. 展示个人作品集最好的方式

热门文章

  1. TD3:双延迟深度确定性策略梯度
  2. uuid生成8位随机编码
  3. spring找不到application.yml文件
  4. python使用ADB工具连接手机进行操作/点赞/评论
  5. var allTableData = $tableLeft.bootstrapTable('getData');//获取表格的所有内容行
  6. 图文详细介绍:使用IDEA通过插件创建流程图解决Activiti工作流部署审批等操作
  7. 谷雨书苑第201期—谷雨对话贾樟柯
  8. python简单实用案例_分享10个给Python小白看的实用案例,入门Python就在这里了
  9. 出身985,工作996,劝退35,美团移动端开发工程师
  10. MySQL数据库创建索引