我的一亩三分地 我就喜欢!
13fen  设为主页
 收藏本站
 
当前位置: > 一亩三分地:首页 > 网络学院 > 网络编程 > ASP专区 > Asp客户端/系统 > Internet开发人员的验证和安全技术(8570)(转自microsoft
热门文章排行
热门文章排行 手推车”功能的实现(10-07)
八大法则防范ASP网站漏洞(10-23)
ASP教程十一、调试ASP脚本(10-23)
在JSP中访问数据库大全(10-23)
虚机服务中常见Asp.Net低级错误一览(03-21)
精采文章排行
精采文章排行 ASP.NET实现抓取网页中的链接(11-15)
ASP连接数据库的11种方法(11-10)
如何动态创建网页的RSS内容摘要(11-10)
ASP网站漏洞及入侵防范方法(11-10)
ASP自定义函数:对字符串正则替换(11-10)
技术专题推荐
网管论坛交流
 

Internet开发人员的验证和安全技术(8570)(转自microsoft 

作者:佚名   来源:一亩三分地   点击:   日期:2007-03-23

Windows NT挑战/响应(Challenge/Response)

Windows NT挑战/响应是确定发送请求的人员的最安全的方式。挑战/响应的处理流程是所有使用IIS的人员必须掌握的。(我们实际是围绕着Windows NT委托(delegation)过程进行,但在挑战/响应后有委托的最好说明。)

现在说明一个完全不同的技术: "散列(Hash)"

Windows NT挑战/响应验证过程中并不通过网络发送密码,因为密码可能会被截获和破译。Windows NT使用的是一个类似于绞肉机的不可逆算法。输入内容后得到一个散列内容。Windows NT使用Internet标准MD4散列算法生成16字节(128位)的散列值。(理论上)不可能使用散列值和算法在数学上逆转加密过程而得到原密码。也就是说,密码作为了一个“私人密钥(private key)”。只有拥有该密钥的人才能产生一个特定的散列值。Windows NT域控制器有一个数据库存储了由用户密码产生的用户散列值,但并未存储用户密码。 (注意密码和散列值的分离不会使域控制器减少受到黑客攻击的可能,因为有时散列值也可以用作密码的等效物。)

IIS与挑战/响应验证过程

如果下面条件满足时,IIS将使用挑战/响应验证:

如果Internet服务管理器的WWW属性对话框的“允许匿名”选项没有被选中,IUSR帐户没有足够的许可权访问所请求的资源,或者执行代码禁止访问。
在Internet服务管理器的WWW属性对话框中选择Windows NT Challenge/Response
浏览器在挑战/响应验证方式下发送请求 (当前浏览器中只有Internet Explorer支持挑战/响应验证)
当我们说IIS尝试验证用户时,IIS所做的工作非常简单。它向浏览器发回一个"HTTP 401 Access Denied"消息,以及它接受的验证方法列表。与一个高级俱乐部的保镖非常相似, IIS这时会说:"You can't get what you want without identifying yourself. By the way, I accept the following methods of identification.(没有确认您的身份,您不能获得所需要的内容。另外,我支持下列验证方法)"。IIS接受的两种验证方法是挑战/响应验证和基本验证。具体使用哪种方法取决于在IIS的Internet服务管理器WWW属性对话框中的选择。如果两种验证方法都被启用,对于Internet Explorer将一定会使用挑战/响应验证,而对其它浏览器则会使用基本验证。

图1从包的角度显示了如何在没有看到用户密码的情况下对他(她)进行Windows 挑战/响应验证。



图1. Windows NT 挑战/响应验证过程

使用随机散列的挑战信息的原因

增加使用密码散列值加密挑战信息的额外步骤,而不是将简单的散列值传送到域,可以使散列值更难以被截获破译而作为密码使用。因为挑战需要用户密码散列值来产生新的散列值,它证实了用户至少拥有用户散列值 (而且可能还有用户密码)。所有的这些不用通过电线传送密码。实质上,密码成为了私人密钥而随机值成为了不断变化的公共密钥。

委托(Delegation)!

委托是大多数实现Windows NT安全和IIS验证的人员所遗漏的内容,甚至当委托对于其考虑的安全Web服务器环境十分关键的人员,或是简单希望Web服务器能够运行的人员也是如此。当IIS Web服务器扮演一个使用挑战/响应验证的用户时,IIS服务器并没有用户的密码或密码散列值。IIS只看到了传送到域控制器的加密的挑战。当使用ASP页访问另一台Windows NT计算机(比如远程数据库服务器)的资源时很可能遇到这种情况。远程服务器向IIS发送挑战信息以验证自己所扮演的用户,而IIS由于无法使用用户散列值加密任何发送给它的挑战信息,所以无法进行验证。因而远程服务器被禁止访问,而你的数据库驱动的Web页将运行失败。这是Windows NT 4.0 (和以前版本)安全模型的一个限制,不是IIS的原因。使用Windows NT挑战/响应验证,一个依靠扮演的进程将无法像一个文本文件一样访问另一台Windows NT计算机上的太多内容。

如果你希望确定何时需要考虑委托,而如果Web服务器拥有用户密码或散列值,请询问自己。在政策上,你应“根据财力(follow the money)”。在委托上,你应“根据密码(follow the password)”!

对此可以有一个类比,行政主管委托一个秘书代其签名并在其它方面替其行使职责。当用户使用挑战/响应验证时,用户无法委托IIS完全按照其利益工作。这个特别的限制可能在Windows NT 5.0发布后会得到完美解决,因为那时Windows NT集成了Kerberos 验证系统 (该系统为MIT的Athena 项目(Project Athena)开发)。


文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【论坛讨论

   相关文章:
·ASP中巧用Response属性 ·第六课:ASP脚本循环语句
·在 Web 页上使用条件数值格式 ·连接数据库查询手册(不仅仅适用于asp)
·警惕"给你的FileSystemObject对象加把锁" ·用ASP做全文检索

   文章评论:(条)
  
 请留名: 匿名评论   点击查看所有评论 网管论坛
 

  责任编辑:一分  声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。