您现在的位置: IT技术文档中心 >> 文档资源 >> 安全技术 >> 安全技术基础 >> 文档正文
精通Windows的安全API
作者:未知 文章来源:互联网 点击数: 更新时间:2007-7-14 15:12:49
    Windows NT提供的安全级别对一个操作系统来说,几乎有点倾向于偏执,它允许你用很多的方式来设置安全性,包括既是日常用户又是文件级别的用户。你也可以创建用户组,并通过组来分配安全性,而不是对单独的用户来分配安全级别。另外,你也可以通过使用各种警报和登记文件来监视系统的安全情况。Windows NT擅长于实时在地监视系统的活动情况,任何事件都逃不出其审查的范围,事实上,即便是从一个进程到另一个进程的信息传送,都要经过系统某一级别的审查。
    对应用程序来说,Windows NT 提供的安全级别却是一把双刃剑。一方面,应用程序不能做太大的破坏,大多数情况下,在造成安全破坏之前,Windows NT便能够简单地中断错误的应用程序;另一方面,对一些在Windows95/98中运行很好的应用程序,施加这么严格的安全限制,将会对程序的运行造成破坏。Windows NT提供的安全性,从本质上说,确实影响了你的机器本身所能提供的兼容性。
    技巧 如果只是想设计一个一般的应用程序,而没有什么与安全性相关的服务,你也许潜意识想用Windows95/98来做。可另一方面,Windows NT提供了那么多的安全服务,以至于你可以创建一个界面几乎不能让人接受的应用程序,然而,要付出的代价是,你的应用将不能在许多机器上运行,因为Windows NT和Windows 95在安全性上几乎处于两种完全不同的极端棗Windows NT具备了几乎太多的安全性,而Window95却几乎没有。
    Windows NT提供的大量安全特性使Internet站点和用户得到了极大的便利,它的本地安全性使Windows NT成为了Web站点中的优秀平台。另外,如果你在使用Windows NT提供的标准特性来编写代码时遇上了什么麻烦,你也可以改进这些特性。例如,在第13章中,你能编写一个ISAPI过滤器来监视后台的事件,如果将ISAPI过滤器和Windows NT的安全特性结合起来,便能够提供至少在跟踪重要安全事件中所需要的任何东西。也就是说,即便你不能阻止黑客对你的安全性进行破坏,你至少还能够跟踪黑客做了些什么,以将其破坏减至最小。另外,识别黑客闯入的地方,也将是提高安全性的一种方法。
    安全特性并不局限于ISAPI过滤器或桌面应用,你也能够将Windows NT的安全性纳入ActiveX控件或扩展ISAPI中。例如,你可以编写一个ActiveX控件,并用它来检测登录你的系统的用户是否真正获得了访问许可。你甚至还可以编写一个扩展ISAPI,它可以根据系统允许用户的不同访问级别,发送给用户不同类型的HTML网页。
    从理论上说,你也可以将Windows NT的安全性加入DLLs中,通过DCOM的使用,它们能被客户机器所访问(甚至可以是Windows 95/98的客户)。因为DLL将在Windows NT服务器上运行,而不是像常规一样下载到客户端,所以客户实际上受到了服务器安全特性的保护。实践证明,在应用中加入此类安全特性,并不增加多少网络负载和服务器处理时间。相比之下,你当然宁愿通过DCOM实施安全性。
    既然Windows NT已经提供了这么多的安全性,那么为什么还要在你的应用中努力去创建附加的安全性呢?第一个原因是,目前为Internet安全性设计的API标准还存在着漏洞,例如,我们已经说过的Internet部件下载服务的漏洞(在第8章中,我们可以看到Internet下载过程的部分论述),因为当前市场上的各种浏览器提供的安全防线还存在着漏洞,所以一些神通广大的人可以通过各种手段绕过我们的安全防线(我们将集中讲述Internet Explorer,当然Netscape和其它浏览器也肯定存在这样或那样的毛病)。这些安全漏洞并非存在于API本身,而是存在于过去为Internet设计的一些解决方案中。实质上,这些过去设计的解决方案到现在已经过时了。以下将告诉你Internet部件下载服务中的三个漏洞。(当然,肯定还有其它漏洞):
    HTML<A HREF>标志。人们有办法通过使用<A HREF>标志来下载和运行一个可执行文件,在Internet Explorer的3.x或4.x版本中,对代码的检测过程中存在这个问题,它当前的做法是,使用URL名字直接下载代码,然后调用WinVerifyTrust来检测代码的合法性(这与第8章中的描述一样),这种方法100%安全吗?回答是否定的,因为你使用了标准进程以外的一些东西来检验文件的内容,在这里你将依赖于这个HTML分析器。
    脚本。现在的脚本对所有安全检测来说,是完全自由的。没有什么方法能检测出是谁创建了这些脚本,或它将会对你的机器做些什么?更严重的是,没有什么方法能检测出这些脚本将会从你的机器中取回些什么信息!(在这一章开始,我们看到了JavaScript能从你的机器中取回的两种信息:用户硬盘中的目录和用户访问的站点)。微软正在创造一些脚本的认证,一旦脚本认证变成了现实,浏览器便可在运行代码前先调用WinVerifyTrust来检测这些脚本。
    完整应用程序的下载,或其它更复杂的下载情况。IE目前在为检测特殊类型的下载,做了许多很好的工作,例如,在下载一个OCX时将插入一个WinVerifyTrust进程。如果下载的参数超出了IE的检测限制范围,将会发生什么情况呢?例如,某一用户可能想下载并安装一个Doom或其它的游戏,而在安装中可能发生一些不可预料的事情,如申请注册或重启系统等,而此时的IE却不能控制它。微软正打算在以后组件下载版本中加强其健壮性,使它能控制这类事件。
    Web链接 作为保护策略中的一部分,你也应该测试多种浏览器并检测它们的反应(尤其在你创建一个公共访问站点时)。编程人员在与多种产品一起工作时,应该在头脑中形成一种基本观念,那就是不断地跟踪你访问过的所有Web站点,一种名叫NavEx的产品允许你将IE的收藏站点复制成Netscape的书签,反之,它也能将Netscape的书签复制成IE的收藏站点,通过访问http://mach5.ocs.drexel.edu/navex/,你可以下载到这个产品。
    注释 在这一章,我们也将探讨Internet技术中的其它漏洞。例如,表14.1列出了一些为填补这些漏洞而设计的新标准。如果没有出现安全问题,SHTTP、S/WAN和其它类似的技术将是不必要的。MIME有一种新技术叫S/MIME,它能确保其它人无法偷窥你的电子邮件(mail)。
    为了精通Windows NT是如何增强Internet站点安全性的,我们首先要来看看操作系统本身提供的安全特性。Windows NT提供的所有安全特性,如映射网络驱动器,都能被应用程序所访问,许多编程人员好象忘记了,使用ActiveX控件也能够访问这些特性。例如,你可以像在第10章中创建一个按钮一样来调用它,其目的是显示一个网络映射对话框,以供用户选择一个驱动器来进行网络映射。
    当然,Windows NT也有一些安全特性并没有涉及Internet的安全领域。如映射网络驱动器,在应用程序中你可以通过创建一个按钮来调用它,但它并没有Internet的安全保护。然而,如果你在一个ActiveX控件中增加上Windows NT的一些其它安全特性,则可以实现它的Internet安全性。例如,你可以在一个ActiveX控件中增加上Windows NT的口令保护,这样,用户每次想要访问你的站点时,将显示一个登录对话框,要求用户输入用户名和口令。
    在一个Internet的应用程序中,通过ActiveX控件来显示登录对话框,实际上完成了两件事:第一,Windows NT提供口令保护的安全性比Windows 95/98要强,黑客如果没有猜出正确的保密字,将要周旋很长时间才能通过这个对话框;第二,你可以让服务器登记下所有的访问记录——请谨记,Windows NT提供给了你监视任何事件的能力。万一实在有人闯入了你的系统,你至少也可以知道这个黑客使用了哪个帐户,并根据这个帐户的安全等级,评估黑客对你的系统可能造成的破坏程度。
    Windows NT提供的安全性API函数将帮助你创建一个更加安全的Internet环境。要使用这些安全特性,在客户站点端,你可以使用ActiveX控件,而在服务器端,你可以使用扩展的ISAPI,并通过在后台运行的ISAPI过滤器来监视事件的安全性。
  • 上一篇文档:
  • 下一篇文档:
  • 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 版权申明 | 雁过留声 | 会员中心 |