当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

帮忙程序员摆脱窘境的十条本领[VC/C++编程]

赞助商链接



  本文“帮忙程序员摆脱窘境的十条本领[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

安全专家Michael Howard和Keith Brown提出了十条本领来帮忙您摆脱窘境.

安全问题触及很多方面.安全风险大概来自任何地方.您大概编写了无效的错误处理代码,大概在赋予权限时过于大方.您大概忘掉了在您的服务器上正在运行什么服务.您大概承受了全部用户输入.如此等等.为使您在保护自己的计算机、网络和代码方面有个杰出初阶,这里展示了十条本领,遵守这些本领可以得到一个更安全的网络战略.

1. 信任用户的输入会将自己置于险境

即便不阅读余下的内容,也要记着一点,“不要信任用户输入”.假如您老是假定数据是有效的并且没有恶意,那么问题就来了.大大都安全柔弱环节都与攻击者向服务器供应恶意编写的数占据关.

信任输入的精确性大概会招致缓冲区溢出、跨站点脚本攻击、SQL 插入代码攻击等等.

让我们具体谈论一下这些潜在攻击方法.

2. 避免缓冲区溢出

当攻击者供应的数据长度大于利用程序的预期时,便会发生缓冲区溢出,此时数据会溢出到内部存储器空间.缓冲区溢出主如果一个 C/C++ 问题.它们是种威胁,但普通很简单修补.我们只看到过两个不明显且难以修复的缓冲区溢出.开辟人员没有预猜测外部供应的数据会比内部缓冲区大.溢出招致了内存中其他数据构造的破坏,这种破坏普通会被攻击者操纵,以运行恶意代码.数组索引错误也会造成缓冲区下溢和超限,但这种情形

没那么广泛.

请看以下 C++ 代码片段:

void DoSomething(char *cBuffSrc, DWORD cbBuffSrc)
{
  char cBuffDest[32];
  memcpy(cBuffDest,cBuffSrc,cbBuffSrc);
}

问题在那边?事实上,假如 cBuffSrc 和 cbBuffSrc 来自可托赖的源(比方不信任数据并因此而考证数据的有效性和大小的代码),则这段代码没有任何问题.但是,假如数据来自不可托赖的源,也未得到考证,那么攻击者(不可托赖源)很简单便可以使cBuffSrc 比 cBuffDest 大,同时也将 cbBuffSrc 设定为比 cBuffDest 大.当 memcpy将数据复制到 cBuffDest 中时,来自 DoSomething 的返回地址就会被更改,因为cBuffDest 在函数的仓库框架上与返回地址相邻,此时攻击者便可通过代码履行一些恶意操作.

补偿的办法就是不要信任用户的输入,并且不信任 cBuffSrc 和 cbBuffSrc 中携带的任何数据:

void DoSomething(char *cBuffSrc, DWORD cbBuffSrc)
{
  const DWORD cbBuffDest = 32;
  char cBuffDest[cbBuffDest];
  #ifdef _DEBUG
   memset(cBuffDest, 0x33, cbBuffSrc);
  #endif
  memcpy(cBuffDest, cBuffSrc, min(cbBuffDest, cbBuffSrc));
}

此函数展示了一个可以削减缓冲区溢出的精确编写的函数的三个特点.首先,它要求调用者供应缓冲区的长度.当然,您不能盲目相信这个值!接下来,在一个调试版本中,代码将探测缓冲区能否真的充足大,以便可以存放源缓冲区.假如不能,则大概触发一个拜候冲突并把代码载入调试器.在调试时,您会诧异地发现竟有如此多的错误.最后也是最重要的是,对 memcpy 的调用是防备性的,它不会复制多于目标缓冲区存放本领的数据.

Windows Security Push at Microsoft(Microsoft Windows? 安全推动活动)中,我们为 C 程序员成立了一个安全字符串处理函数列表.您可以在 Strsafe.h: SaferString Handling in C(英文)中找到它们.


  以上是“帮忙程序员摆脱窘境的十条本领[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 帮忙程序员摆脱窘境的十条本领
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .