比较Form和集成Windows验证的安全性

 

想写一篇安全验证话题的文章,其中涉及到比较asp.net forms和集成Windows验证两者安全性,于是单独提了出来,写了本篇东东。

 

Forms验证其实很简单,只是提供了一个表单,让用户输入登录信息,然后将表单提交给服务器,服务器端验证用户是否合法,然后设置相应的httpcookie,来标识用户的身份。用户以后访问其他页面时,都需要提供这个cookie来标识自己的身份。

但是,这样做有个很大的弊病,如果以缺省方式进行的话,用户的帐户信息都是明文传送的,网络的嗅探器很容易截获这类数据包,这样,除非另作处理,如使用https等等,否则安全性无法得到保证。

 

集成Windows验证相当于把验证工作交给了Windows系统,由IIS来判别用户的身份,从而决定是否允许该用户访问。当我们访问需要windows验证的页面时,可能的操作步骤是这样的:

Client

Server

发送Get,请求某个页面

 

 

返回401 access Denied

同时返回 www-authenticate标记 NTLM

浏览器读取到这个标记后,弹出一对话框要求用户输入用户名口令,然后将该信息处理
(该处理可能是一个对用户名口令加签和加密的操作)后发送到(通过Authorization标记)服务器

 

 

服务器处理该信息(可能是一个解密和服务器签名过程),然后返回(通过www-authenticate标记)

浏览器将服务器返回的信息再次处理(可能是对服务器进行验证操作),发送至服务器

 

 

服务器处理(可能是查询)该信息后,返回是否验证通过信息

如果验证通过,则按照正常web请求继续进行

 

通过以上的步骤我们可以看到,集成windows验证整个过程的信息传送都不是明文的,即便有人截取了交互的整个过程,他也无法(或者说很难)得到用户的帐户信息,这在一定程度上保证了用户帐户的安全。

 

以上的内容纯粹为个人的业余研究,并无任何权威性,希望大家指点。

posted @ 2005-09-12 11:51  OOP  阅读(2283)  评论(12)    收藏  举报