防止Visual C++应用程序缓冲区溢出
2008-11-13 19:32:40 来源:WEB开发网缓冲区溢出证明了一个观点:除非你看着用户与你的应用程序交互操作,否则你根本就不知道用户会向应用程序输入什么样的数据。这些攻击依赖于一些奇怪的想法:黑客给应用程序提供的输入信息可能超过了缓冲区的长度,结果这些额外的(超出缓冲区长度的)信息覆盖了缓冲区控制之外的内存。在某些情况下,这些内存实际上保存着可执行信息(heap memory overrun,堆存储泛滥),从而使应用程序不运行原始的可执行代码,而是运行黑客的代码;在另外一些情形中,黑客则覆盖了应用程序的栈页面(stack memory overrun,栈存储泛滥)。
有些黑客甚至于分析你的代码,查找位置以供堆或栈存储泛滥利用。但是在有些情况下,当黑客试图向某个字段输入一些信息,查看发生什么情况的时候,这种利用可能被发现。例如,黑客可能试图输入一段简单的代码,看你的应用程序是否会执行它。不管该黑客是如何发现漏洞的,其结果都是相同的:你的应用程序失去了对黑客代码的控制权--黑客现在可以享受那些曾经是你的应用程序才能享受的权力了。
很多开发者认为黑客会通过某些秘密的通道来利用他们所建立的程序,但是很多利用方法是非常简单的--让操作系统显示命令提示符这样的行为在某些情况下就足以获取控制权了。如果系统的安全性稍微有一点松懈,黑客就可以获取服务器的控制权。至少,命令提示符允许黑客探测系统的状况,采用其它的某种方式来获取更多的访问权。黑客不需要在第一次尝试的时候就获得系统的控制权。他们所需要的是获取累积起来的点点滴滴的控制权。
很明显,如果要保证应用程序免受缓冲区泛滥的伤害,你就必须为应用程序提供某种保护措施。控制缓冲区泛滥的最好的方法是检查程序收到的所有输入信息,即使这些信息来自受信任的来源。本文考虑了每个程序应该执行的四个基本的检查:检查数据范围、验证数据长度、排除非法字符、为用户提供足够的帮助以确保良好的输入。
- ››防止网站被JS挂马和查杀方法
- ››Visual Basic 2008 数学函数
- ››防止iphone进入休眠后台播放音乐
- ››防止iphone进入休眠后台播放音乐
- ››Visual Studio2005中Smart Device的问题
- ››Visual Studio 中根据数据库字段动态生成控件
- ››Visual Studio 11全新黑色主题
- ››Visual Studio 2011 Beta新特性(一):安装VS201...
- ››应用程序的配置管理Poco
- ››防止SQL SERVER的事件探查器跟踪软件的SQL脚本
- ››Visual Studio自定义调试窗体两个小技巧
- ››Visual Studio 2005 Team Edition for Database P...
更多精彩
赞助商链接