帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > ASP编程
如何使Web更安全 - 4
作者:Timer(转) 发布时间:2005-03-12 来源:因特耐特
四、试图控制Web站点主机

一些攻击利用web服务器上运行的软件的漏洞来让服务器执行攻击者的代码。一类臭名昭著的攻击方法就是向缓存写入大量的数据从而使缓存器崩溃。下面所摘录的一段C++代码就很容易受到这样的攻击,因为它没有边界检查。

void ByYourCommand( char* pszData )
{ char szBuffer[ 255];
strcpy( szBuffer, pszData ); ...}

如果执行strcpy()过程使堆栈溢出,将会产生什么结果呢?图4向你展示了系统堆栈溢出后的情况。如果攻击者在缓存中写入了太多的数据,它将覆盖函数调用记录。这是一个数据结构,它包含了保存函数入口代码的寄存器,还有函数的返回地址。如果攻击者的代码覆盖了函数的返回地址,攻击者就可以在你的计算机上执行任何代码。


图4 通过使缓存溢出,攻击者把攻击代码加载到内存,
代替函数的返回地址,从而执行攻击代码

攻击者是如何把他的攻击代码移植到你的电脑上的呢?他使用的方法就是把代码写进数据缓存,传递这个例子函数的字符串很容易感染上“特洛伊木马”这样的黑客程序。有许多文章已经介绍过这类的攻击方式。

黑客知道易攻击的函数(例如上面所举的函数例子)通常易被回应用户输入的代码所调用。攻击者发送一个不可能的长字符串给服务器。如果缓存溢出,处理他的请求的线程将崩溃。攻击者得到HTTP超时的消息提示就表明请求线程已被破坏。

如何阻止你Web站点的应用程序被利用呢?首先,给系统软件添加最新的安全补丁。然后,检查使用允许直接访问内存的语言(例如:C、C++和Delphi)编写的程序代码,看是否有安全漏洞。

检查代码可以给你无尽的信心,因为你可以发现一个应用程序并不是很容易就受到缓存溢出这样的攻击的。如果你要完全避免这样的问题,只能不使用直接访问内存的语言来编写代码。你可以使用一些脚本语言(例如:JavaScript、Perl)或使用解释性的语言(例如Java)。如果使用安全的语言来编写代码,Web站点的操作员就可以被解放出来,不用天天担心缓存溢出这样的安全攻击。

另外,你也不要盲目地相信各种安全技术,厂商虽然为了推销自己的产品而做出了很好的安全质量承诺,但是你要知道没有任何技术能够保证你的Web不遭受攻击。所以你需要一定的时间和精力去研究和发现Web的缺点,然后找出解决问题的方法。

Web的安全性问题非常复杂,范围很广,在本文中,我们只是从外部的攻击角度出发,讨论了如何避免Web应用程序和Web数据遭到破坏和窃取,来防止非法用户对Web应用程序的越权访问,提高Web站点的安全性。


  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·如何使Web更安全 - 1  (2005-03-12)
 ·如何使Web更安全 - 2  (2005-03-12)
 ·如何使Web更安全 - 3  (2005-03-12)
 ·如何提高WEB程序的效率 (第一篇  (2005-03-12)
 ·如何制作无状态的ASP组件  (2005-03-12)
 ·如何更好更快的debug  (2005-03-12)
 ·如何插入Access库记录后马上得到  (2005-03-12)
 ·如何Response.Redirect新的页面到  (2005-03-12)
 ·关于vbscript 与 javascript如何  (2005-03-12)
 ·Vsiaul C#如何读取注册信息  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·在ASP中使用数据库
·使用ASP脚本技术
·通过启动脚本来感受ASP的力量
·学习使用ASP对象和组件
·解析asp的脚本语言
·初看ASP-针对初学者
·ASP开发10条经验总结
·ASP之对象总结
·ASP与数据库应用(给初学者)
·关于学习ASP和编程的28个观点
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统