安全Cookie的设计开发C# 第8页

C#安全Cookie的设计开发

第四章 系统实现

4.1 设计环境介绍

1、系统环境:Windows Server 2003.Net Framework 2.0 Microsoft SQL Server 2005

2、开发环境:Microsoft Visual Studio 2005ASP.NET2.0C#语言

3、网络环境:3PC通过TP-LINK R402M SOHO宽带路由器组成局域网。其中一台作为Web服务器,另外二台作为工作站。

4、测试工具: IECookiesView V1.71Cookies & Inject Browser

4.2 模型设计的实现

4.2.1系统配置

网络配置[13]3台计算机通过宽带路由器组成局域网,其中一台作为服务器,提供Web服务、数据库服务、DNS服务;另外二台作为工作站,用来访问Web服务器。服务器和工作站均在192.168.1.0/255.255.255.0网段中,其中网关的IP192.168.1.1/255.255.255.0,服务器IP192.168.1.2/255.255.255.0,工作站一IP192.168.1.3/255.255.255.0,工作站二的IP192.168.1.4/255.255.255.03台计算机的DNS服务器均设置成192.168.1.2

DNS服务配置[21]:作为实验环境中,DNS服务器(192.168.1.2/24)新建一个正向主要区域,域名为d;在d域中新建3个主机名,分别为Cookie1Cookie2Cookie3,指向的IP均为192.168.1.2

IIS服务配置[21]:打开服务器的Internet信息服务(IIS)管理器,新建3个网站,对应的设置参数如表4.2-1所示。

 

 

4.2-1 IIS网站配置参数

网站名称

IP地址

端口

主机头

主目录

对应的系统

演示网站一

192.168.1.2

80

Cookie1.d

E:\Cookie1

明文Cookie系统

演示网站二

192.168.1.2

80

Cookie2.d

E:\Cookie2

加密Cookie系统

演示网站三

192.168.1.2

80

Cookie3.d

E:\Cookie3

MAC/IP绑定加密Cookie系统

SQL Server 2005服务配置[22]SQL Server 2005安装完毕之后,设置的超级管理员用户名为sa,密码为sa_123456。然后使用ASP.NET SQL Server安装向导(路径:C:\Windows\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe)来创建一个默认成员数据库。

完成上述系统配置,本设计的开发前准备工作已经全部完成,下面具体实施本系统的开发调试。

4.2.2模型实现

按照上节中所述的配置方法完成之后,使用Microsoft Visual Studio 2005新建一个ASP.NET网站,然后依次展开菜单[网站]-[ASP.NET网站配置],打开ASP.NET网站配置工具,点击“安全”链接,选择身份验证类型为“通过Internet”即Form窗体验证,添加新用户:用户名为dsz,密码为dsz_123456。配置完成之后关闭ASP.NET网站管理工具。然后分别实现系统模型。

Ø        明文Cookie模型的设计实现[4,5,7]

打开Microsoft Visual Studio 2005打开一个ASP.NET网站,网站位置为“本地IIS”中的“演示网站一”,新建登陆页面“Login.aspx”存放于网站根目录,Login.aspx窗体中放置登陆框,用户可以在这里输入用户名和密码登陆系统。新建页面Default.aspx,此页面限制只有注册用户登陆之后才可以查看,页面中显示从Cookie中读取的信息。编辑Web.config文件,添加数据库连接,连接SQL Server中的aspnetdb数据库来提供用户。

对该模型安全性的验证方法为:从工作站一打开网站http://Cookie1.d,使用正确的用户名“dsz”和密码“dsz_123456”登陆,并选中“下次自动登陆”复选框,这样Cookie就被保存在“C:\Documents and Settings\用户名的文件夹\Cookies”中,用记事本将此文件打开administrator@Cookie1.d.txt这个文件,可以看到用户名被明文保存在其中,使用IECookiesView对此Cookie文件进行修改或者在工作站二中使用Cookies & Inject Browser工具将Cookie值提交到网站http://Cookie1.d,发现网站并没有要求登陆就直接打开了“Default.aspx”页面,因此,这种Cookie设计的方法是不安全的。

Ø        加密Cookie模型的设计实现[4,5,6,7]

打开Microsoft Visual Studio 2005打开一个ASP.NET网站,网站位置为“本地IIS”中的“演示网站二”,新建登陆页面“Login.aspx”存放于网站根目录,Login.aspx窗体中放置登陆框,用户可以在这里输入用户名和密码登陆系统。新建页面Default.aspx,此页面限制只有注册用户登陆之后才可以查看,页面中显示从Cookie中读取的密文信息以及从密文中解密出来的明文信息,用以对比加密效果。编辑Web.config文件,加密解密方法以及加密解密的密钥,Form身份验证的各项参数(包括Cookie名,Cookie模式、Cookie有效期、Cookie路径等),添加数据库连接来连接SQL Server中的aspnetdb数据库来提供用户。

对该模型安全性的验证方法为:从工作站一打开网站http://Cookie2.d,使用正确的用户名“dsz”和密码“dsz_123456”登陆,并选中“下次自动登陆”复选框,这样Cookie就被保存在“C:\Documents and Settings\用户名的文件夹\Cookies”中,用记事本将此文件打开administrator@Cookie2.d.txt这个文件,可以发现Cookie文件中的内容是一串无意义的字符串,因此,在保密性方面做的很好;使用IECookiesView对该Cookie内容进行修改,再次打开网站http://Cookie2.d,此时将会要求重新登陆,因此,在完整性方面也得到了保证;在工作站二中使用Cookies & Inject Browser工具将此Cookie提交到网站http://Cookie2.d,网站未要求登陆直接打开了“Default.aspx”页面,可见,在可鉴别性方面没有得到保证,即Cookie可以被盗用。因此,这种Cookie设计的方法是不安全的。

Ø        MAC地址/IP地址绑定加密Cookie模型设计的实现[4,5,6,7,8,9]

打开Microsoft Visual Studio 2005打开一个ASP.NET网站,网站位置为“本地IIS”中的“演示网站三”,新建登陆页面“Login.aspx”存放于网站根目录,Login.aspx窗体中放置登陆框,用户可以在这里输入用户名和密码登陆系统。新建页面Default.aspx,此页面限制只有注册用户登陆之后才可以查看,并且还会检查当前请求的客户端的MAC地址或者IP地址是否与初始生成Cookie的客户端相符,只有相符才允许进入该页面,在页面中显示的是客户端的MAC地址或者IP地址以及从Cookie中读取的密文信息以及从密文中解密出来的明文信息。新建一个类“GetClientMac”用以获取客户端的MAC地址或IP地址。编辑Web.config文件,加密解密方法以及加密解密的密钥,Form身份验证的各项参数(包括Cookie名,Cookie模式、Cookie有效期、Cookie路径等),添加数据库连接来连接SQL Server中的aspnetdb数据库来提供用户。

对该模型安全性的验证方法为:从工作站一打开网站http://Cookie3.d,使用正确的用户名“dsz”和密码“dsz_123456”登陆,并选中“下次自动登陆”复选框,这样Cookie就被保存在“C:\Documents and Settings\用户名的文件夹\Cookies”中,用记事本将此文件打开administrator@Cookie3.d.txt这个文件,可以发现Cookie文件中的内容是一串无意义的字符串,因此,在保密性方面做的很好;对该Cookie内容进行修改,再次打开网站http://Cookie3.d,此时将会要求重新登陆,因此,在完整性方面也得到了保证;在工作站二中使用Cookies & Inject Browser工具将此Cookie提交到网站http://Cookie3.d,页面提示“MAC/IP”验证失败,并要求用户登陆,可见,在可鉴别性方面得到了保证,即Cookie不会被盗用。因此,这种Cookie设计的方法是安全的。

需要指出的是,此模型存在缺陷,其一:若工作站处于局域网中,不能防止同一局域网中的用户盗用Cookie;其二:若生成Cookie的时候使用的是客户端IP地址,则当该客户端IP地址发生变更,服务器会要求用户重新登陆;其三:MAC地址和IP地址均可以伪造,别有用心的人得到Cookie后,仍可以伪造用户电脑的MAC地址或者IP地址。虽然有缺陷,但是毕竟服务器不可能对客户端电脑做到完全的保护,需要用户自己保护好自己的隐私,总的来说这些缺陷不会构成普遍的安全隐患,实用性仍然值得推广。下一节中将介绍程序开发中的具体代码实现。

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]  ... 下一页  >> 

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有