比较Form和集成Windows验证的安全性
想写一篇安全验证话题的文章,其中涉及到比较asp.net 中forms和集成Windows验证两者安全性,于是单独提了出来,写了本篇东东。
Forms验证其实很简单,只是提供了一个表单,让用户输入登录信息,然后将表单提交给服务器,服务器端验证用户是否合法,然后设置相应的httpcookie,来标识用户的身份。用户以后访问其他页面时,都需要提供这个cookie来标识自己的身份。
但是,这样做有个很大的弊病,如果以缺省方式进行的话,用户的帐户信息都是明文传送的,网络的嗅探器很容易截获这类数据包,这样,除非另作处理,如使用https等等,否则安全性无法得到保证。
集成Windows验证相当于把验证工作交给了Windows系统,由IIS来判别用户的身份,从而决定是否允许该用户访问。当我们访问需要windows验证的页面时,可能的操作步骤是这样的:
|
Client |
Server |
|
发送Get,请求某个页面 |
|
|
|
返回401 access Denied 同时返回 www-authenticate标记 NTLM |
|
浏览器读取到这个标记后,弹出一对话框要求用户输入用户名口令,然后将该信息处理 |
|
|
|
服务器处理该信息(可能是一个解密和服务器签名过程),然后返回(通过www-authenticate标记) |
|
浏览器将服务器返回的信息再次处理(可能是对服务器进行验证操作),发送至服务器 |
|
|
|
服务器处理(可能是查询)该信息后,返回是否验证通过信息 |
|
如果验证通过,则按照正常web请求继续进行 |
|
通过以上的步骤我们可以看到,集成windows验证整个过程的信息传送都不是明文的,即便有人截取了交互的整个过程,他也无法(或者说很难)得到用户的帐户信息,这在一定程度上保证了用户帐户的安全。
以上的内容纯粹为个人的业余研究,并无任何权威性,希望大家指点。
浙公网安备 33010602011771号