本科毕业设计论文--基于internet的数据安全上传软件设计.doc
*学院2009届本科生毕业论文 基于Internet的数据安全上传软件设计 *毕业论文(设计)题 目: 基于Internet的数据安全上传软件设计 院(系): 计算机科学与技术学院 专业年级: 计算机科学与技术2005级 姓 名: * 学 号: 051210133 指导教师: * 讲师 2009年03月10日原 创 性 声 明本人郑重声明:本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。毕业论文中凡引用他人已经发表或未发表的成果、数据、观点等,均已明确注明出处。除文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的科研成果。对本文的研究成果做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律责任由本人承担。论文作者签名: 日 期: 关于毕业论文使用授权的声明本人在指导老师指导下所完成的论文及相关的资料(包括图纸、试验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属*学院。本人完全了解*学院有关保存、使用毕业论文的规定,同意学校保存或向国家有关部门或机构送交论文的纸质版和电子版,允许论文被查阅和借阅;本人授权*学院可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存和汇编本毕业论文。如果发表相关成果,一定征得指导教师同意,且第一署名单位为*学院。本人离校后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为*学院。论文作者签名: 日 期: 指导老师签名: 日 期: 基于Internet的数据安全上传软件设计摘要随着Internet的普及,网速越来越快,对于用户来说,利用网络的优势,将文件通过网络存储和传输变的越来越方便了,所以简单的设计了这个文件上传和管理的小应用程序,基本能满足用户的上传和下载功能的需求,用户对于程序的要求是:能够方便的划分目录并来管理上传的文件。结合B/S模式使用方便,客户端统一采用浏览器,不限制客户平台,可以方便的和其他业务系统连接。其三层3-tier结构,大大减缓了客户端载荷,减轻了系统维护与升级的成本和工作量,降低了用户的总体成本。它能有效地保护数据平台和管理访问权限,服务器数据也很安全。所以本系统采用b/s网站模式实现。当用户还想与网络进行交互,比如重要资料和数据上传到Internet,从可以方便用户随时随地的查看和更新资料和数据。针对网络的数据上传的安全隐患却困扰着人们。“基于Internet的数据安全上传软件”可以让用户更加安心的在网络上上传自己资料和数据。本网站实现后,能使网络用户更方便的上传、下载资料,搜索资源,并且为确保上传文件的数据安全,本网站采用用户权限管理、登陆验证码验证和数据加密技术,体现了一定的安全性。随着Internet的普及,网页逐渐融入人们的生活,快速及时地浏览新闻,获取五彩缤纷的网上信息,已成为人们日常生活的一部分,与此同时越来越多的企业建立了自己的WWW网站,企业通过网站可以展示产品,发布最新动态,与用户进行交流和沟通,与合作伙伴建立联系,以及开展电子商务等。其中产品发布系统是构成企业网站的一个重要组成部分,它担负着双层作用,一方面可以用来动态发布有关新产品或新开发项目,另一方面又可以及时向顾客公告企业经营业绩、技术与研发进展、特别推荐或优惠的工程项目、产品和服务,从而吸引顾客,扩大顾客群。本系统采用最新的技术,数据库。网络发展前景无限,及早与网络结合,与信息时代同步。关键词: B/S模式,3-tier结构,上传目录 摘要31 绪论51.1 系统总体设计51.1.1系统功能描述51.1.2 系统性能61.2 系统模块的分析61.3数据库设计和建立61.3.1数据库中表的建立61.3.2数据库中存储过程的设计81.4系统的配置91.4.1 连接数据库92 问题的解决112.1主要界面及相关的代码分析112.1.1登录首页112.2管理员操作模块142.3 自定义类172.4 注册页面232.5 用户修改密码页面262.6 普通用户操作模块283自己的结论354 附录375 参考文献546致谢55格式1页面格式有误! 绪论随着Internet的普及,网页逐渐融入人们的生活,快速及时地浏览新闻,获取五彩缤纷的网上信息,已成为人们日常生活的一部分,与此同时越来越多的企业建立了自己的WWW网站,企业通过网站可以展示产品,发布最新动态,与用户进行交流和沟通,与合作伙伴建立联系,以及开展电子商务等。其中产品发布系统是构成企业网站的一个重要组成部分,它担负着双层作用,一方面可以用来动态发布有关新产品或新开发项目,另一方面又可以及时向顾客公告企业经营业绩、技术与研发进展、特别推荐或优惠的工程项目、产品和服务,从而吸引顾客,扩大顾客群。本系统采用最新技术,ACCESS数据库。网络发展前景无限,及早与网络结合,与信息时代同步,与高科技汇合,定会给社会各行各业的发展注入新鲜的活力。站在网络时代的前夜,我们清晰地听到了网络时代的宣言:谁掌握了网络,谁就掌握了未来。1.1 系统总体设计在Web应用程序的设计中,常常会遇到需要向服务器上传文件并且进行一定的管理的需求。为了完成这个需求,设计一个类似与网络U盘功能的Web应用程序。1.1.1 系统功能描述本网站实现后,能使网络用户更方便的上传、下载资料,搜索资源,并且为确保上传文件的数据安全,本网站采用用户权限管理、登陆验证码验证和数据加密技术,体现了一定的安全性。这个基于Internet的数据安全上传软件设计的功能包括管理员的操作功能和普通用户的操作功能两大部分,如下所列: 1)管理员的操作功能。管理员的操作权限最大,可以对目录、文件、用户、以及用户权限等情况进行统一的管理,细分如下:(1)用户信息的管理功能。用户信息的添加;用户信息的修改删除;(2)目录信息的管理功能。对目录信息的添加、删除、更改等功能;(3)文件信息的管理功能。对文件信息的上传、下载、添加、删除、更改等基本功能;(4)为了管理的方便和系统的安全,不允许其他的用户进入该模块。2)普通用户的操作功能。普通用户只是利用此系统进行与自己有关的信息的查询输入等,不能操作和修改其他的信息,普通用户的操作功能如下:(1)可以按目录浏览文件,比如说类似于Windows的资源管理器样式。(2)添加文件的分类目录。(3)修改文件的分类目录。(4)删除文件的分类目录。(5)上传文件。(6)下载文件。(7)删除文件。其实,普通用户最主要的功能就是上传和下载东西,把网络当成一个U盘一样的功能。1.1.2 系统性能一般的性能需求是指相互消息传递顺利,协议分析正确,界面友好,运行事件满足使用需要,安全性得到完全的保证。就实际的情况,在高系统配置、高网络带宽很容易得到保证的情况下,我们最需要考虑的性能需求就是系统安全性问题。要限定格式相应的目录访问,如其他用户不能随意访问管理员目录。将行了认证与授权。尤其要注意认证,在此使用Form验证,简单地说就是确定谁时特定用户,并针对安全检测验证该用户的身份。在识别用户之后,就要利用一种方法向用户授权,从而得到系统特有的功能。也就是说,需要一种方法来决定允许特定用户进行什么样的操作。在配置文件种有相关的设置,这些都是进行下一步设计时需要考虑的性能方面的内容。1.2 系统模块的分析数据安全上传系统的管理的主要功能包括一下两个方面:管理员的管理,如用户管理、目录管理、文件管理。普通用户只能对自己的目录进行添加、删除、修改以及文件的上传、浏览、删除等功能。其中目录和文件的操作可以看成是一个网络U盘。1.3数据库设计和建立1.3.1数据库中表的建立在系统中设计了四张表,有用户表、目录表、文件表、还有用户与目录关系表。首先是用户信息数据表(UserInfo),用于存储一般的普通用户,就是自己能上传自己的东西,但只能对自己的上传信息进行操作的用户,可以在系统中对这个方面进行注册,以便添加用户。 用户信息数据表表格编号、标题从上面的分析中就可以看出来,这个程序需要处理的对象主要就是两个:一个是目录,另一个是文件,所以需要处理的数据就是这两个数据对象的信息,需要在SQL Server 2005 中建立两个表,表DirInfo用来存储网络U盘目录,表FileInfo来存储文件信息。下面来看看这两个表的设计。DirInfo表,用来存储网络U盘的目录信息,如下表所示。 其中,ParID这个字段主要用来存储文件目录的层次关系,记录当前目录所属的上级目录的编号,如果是顶级的目录,则一般我们设置ParID的值为0。 FileInfo表,用来记录上传上来的文件信息,如下所示。这张表里记录了上传文件的基本信息,例如文件的名称,所在的磁盘的位置,上传的时间和文件的大小,另外用DirID这个字段来保存文件所在的目录编号。这两个表就是通过DirInfo表中的ID字段和FileInfo中的DirID字段来相互对应的。这两个表的关系图如下图所示。 1.3.2数据库中存储过程的设计构建了数据库的表结构后,接下来创建负责表中信息选择、添加、更新、以及删除的相关存储过程,具体操作如下所示:(1)AddDir存储过程。该存储过程是在DirInfo表中添加新的目录的基本信息,具体内容包括目录号、目录名、目录所属的上级目录编号。该存储过程在系统的用户创建新的目录的时候调用。CREATE PROCEDURE dbo.AddDirDirName nvarchar(255),ParID int,RootID int ASinsert into DirInfo(DirName,ParID,RootID) values(DirName,ParID,RootID)GO(2)AddFile存储过程是在FileInfo表中添加新文件的基本信息,具体的内容包括文件的名称、所在磁盘的位置、上传的时间、文件的大小、文件所在的目录号。CREATE PROCEDURE dbo.AddDirDirName nvarchar(255),ParID int,RootID int ASinsert into DirInfo(DirName,ParID,RootID) values(DirName,ParID,RootID)GO(3)AddUser存储过程是在UserInfo表中添加新用户的基本信息,具体的内容包括用户姓名、密码、年龄。在注册用户的时候调用。CREATE PROCEDURE dbo.addUser UserName char(20),UserPassWord char(20),UserAge smallint,ReturnValue int outputASdeclare RootDirID intset ReturnValue=0if(Select count(*) from UserInfo where UserName=UserName)>0)set ReturnValue=1elsebegininsert into DirInfo(DirName,ParID) values(UserName,0)select RootDirID=max(ID) from DirInfoinsert into UserInfo(UserName,UserPassWord,UserAge,RootDirID) values(UserName,UserPassWord,UserAge,RootDirID)set ReturnValue=2endGO(4)DelDir存储过程是对目录表中信息的删除,create procedure DelDirID intas Delete from DirInfo where ID=IDGO(5)UpdateDir存储过程是对目录表中的目录信息进行修改的操作。CREATE PROCEDURE dbo.UpdateDir DirId int,DirName varchar(255)ASupdate DirInfo set Dirname=DirName where ID=DirIdGO(6)GetAllFiles是对上传文件中的所有信息的显示。CREATE PROCEDURE dbo.GetAllFiles ASselect * from FileInfo Left join DirInfo on FileInfo.DirID=DirInfo.IDGO1.4系统的配置 通过web.config来配置应用程序,下面给出配置方法。1.4.1 连接数据库 系统为保持良好的可移植性,采用对数据库配置进行统一管理的方法,将程序中用到的所有的连接字符串信息统一放于web.config配置文档中,在程序中通过这一配置调用,进行数据库连接。 对于数据库调用字符串,由于数据库使用的是本地数据库,Data Source(数据源)设置为(local);uid(用户ID)赋值为系统默认的sa:Pwd赋值也是sa,database(数据库名称)设为网络上传软件数据库。Web.config配置文件的相关主要代码是: <configuration> <appSettings/> <connectionStrings> <add name=“WebUDisk” connectionString=”server=.;database=网络上传软件数据库;uid=sa;pwd=sa”/> </connectionStrings> 在每个需要连接数据库的程序中读取web.config配置文档中的数据库设置信息,只要使用如下语句即可。connectionStringcon=newconnectionString(configurationManager“WebUDisk”.connectionString.ToString();con.Open(); 我们只需要在程序文件中加入这几行代码,就可以将数据库连接字段读取到字符串 con中,就可使用所连接的数据库了。1.4.2设置用户验证和授权在系统中专门建一目录为:admin,以便在web.config中控制。 先在web.config中设置用户名和密码,代码清单如下:<authentication mode="Forms"> <forms> <credentials passwordFormat="Clear"> <user name="admin" password="123"/> <user name ="manager" password="111"/> </credentials> </forms> </authentication>然后设置目录admin的访问权限。 <location path="admin"> <system.web> <authorization> <allow users="admin"/> <deny users="*"/> </authorization> </system.web> </location>系统配置以后,只有用户名admin和manager的两个用户才能访问manager目录中的文件。否则将会是要求重新登录。 2 问题的解决2.1主要界面及相关的代码分析这个上传软件系统是首先让注册的用户登录,在登录界面的后台代码中进行一个条件语句的判断,如果是管理员那就直接进入管理员界面,如果是普通用户那就直接进入普通用户界面,如果是没有注册的用户,则弹出来一个对话框,提示用户注册,通过登录界面的注册按钮,就可以进入注册页面进行注册,如果已经注册了的用户想修改密码,那就直接选定修改密码按钮,就直接显示出修改密码的页面,就可以进行密码的修改了。2.1.1登录首页登录页面具有自动识别用户类别的功能,不同用户登录时将根据其不同的身份进入不同的功能页面,系统用户包括两种,一种是超级用户,一种是普通用户,在用户身份验证通过后,系统用Session记录其用户名和身份,分别进入管理员模块和普通用户操作模块。并伴随用户对系统进行操作的整个生命周期。一下给出上传软件首页(login.aspx.cs)的后台支持类主要代码,前台脚本代码(login.aspx)可以通过使用.NET集成开发环境,页给出来前台的代码。前台的代码如下:<% Page Language="C#" AutoEventWireup="true" CodeFile="login.aspx.cs" Inherits="login" %><!DOCTYPE html PUBLIC "-/W3C/DTD XHTML 1.0 Transitional/EN" "http:/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http:/www.w3.org/1999/xhtml" ><head runat="server"> <title>无标题页</title></head><body style="text-align: center"> <form id="form1" runat="server"> <div> <br /> <br /> <br /> <br /> <br /> </div> <table style="background-color: #f2f5ff"> <tr> <td colspan="2"> 用户登录</td> </tr> <tr> <td style="width: 100px"> 用户名</td> <td style="width: 100px"> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox></td> </tr> <tr> <td style="width: 100px; height: 12px"> 密 码</td> <td style="width: 100px; height: 12px"> <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox></td> </tr> <tr> <td colspan="2"> <asp:Button ID="Button1" runat="server" OnClick="btnlog_Click" Text="登录" Width="69px" Height="23px" /><asp:Button ID="Button2" runat="server" OnClick="btnreg_Click" Text="注册" Width="65px" /><asp:Button ID="Button3" runat="server" OnClick="Button3_Click" Text="更改密码" Width="67px" /></td> </tr> </table> </form></body></html>后台(login.aspx)代码如下:protected void Page_Load(object sender, EventArgs e) protected void btnlog_Click(object sender, EventArgs e) /判断用户名和密码的输入是否为空 if (TextBox1.Text = string.Empty | TextBox2.Text = string.Empty) Response.Write("<script>alert('用户名和密码不能为空!')</script>"); else /创建连接数据库对象,并读取Web.config文件中的连接数据库的字符串 if (System.Web.Security.FormsAuthentication.Authenticate(this.TextBox1.Text.Trim(), TextBox2.Text.Trim() System.Web.Security.FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, true); Response.Redirect("admin/admin.aspx"); string strCon = ConfigurationManager.ConnectionStrings"WebUDisk".ConnectionString; SqlConnection con = new SqlConnection(strCon); con.Open(); /定义查询用户输入的用户名和密码的字符串 String cmdtext = "select UserName,Status,RootDirID from UserInfo Where UserName=UserName and UserPassWord=UserPassWord" /创建SqlCommand命令对象 SqlCommand cmd = new SqlCommand(cmdtext,con); /定义参数并设定参数 cmd.Parameters.Add("UserName", SqlDbType.Char, 20); cmd.Parameters"UserName".Value = this.TextBox1.Text.ToString(); cmd.Parameters.Add("UserPassWord", SqlDbType.Char, 20); cmd.Parameters"UserPassWord".Value = this.TextBox2.Text.ToString(); /执行查询操作,并将查询的结果保存到dr对象中 SqlDataReader dr = cmd.ExecuteReader(); /判断是否查询到用户登录时输入的密码和用户名 if (dr.Read() /将用户名保存到session"name"中 Session"name" = this.TextBox1.Text; Session"status" = dr.GetInt32(1); Session"rootDirID" = dr.GetInt32(2); Session"rootDirName" = this.TextBox1.Text.Trim(); /跳转到admim.aspx页面 Response.Redirect("Default.aspx?dirid="+dr.GetInt32(2).ToString()+"&dirname="+this.TextBox1.Text.Trim(); else Response.Write("<script>alert('用户名或密码错误')</script>"); protected void btnreg_Click(object sender, EventArgs e) Response.Redirect("register.aspx"); protected void Button3_Click(object sender, EventArgs e) Response.Redirect("updatapass.aspx"); 2.2管理员操作模块 该模块的程序代码都放到名为”admin”的子目录中,便于在配置文件web.config中统一控制。即不通过登录,是不能直接浏览该目录的文件的。若直接浏览,将转到web.config中指定的login.aspx页面,让你必须重新登陆,若登陆成功,就可以进入下列页面了。2.2.1管理员查看页面管理员可以查看到所有用户的信息,比如所有用户的上传信息他都可以看到,然后可以进行下载、删除等操作。界面如下:admin前台的代码是:<table> <tr> <td colspan="2" style="background-color: #f8f5ff"> 管理员查看</td> </tr> <tr> <td style="width: 100px; height: 274px; background-color: #eef5ff"> <asp:TreeView ID="TreeView1" runat="server" Height="330px" Width="120px" ImageSet="XPFileExplorer" NodeIndent="15"> <ParentNodeStyle Font-Bold="False" /> <HoverNodeStyle Font-Underline="True" ForeColor="#6666AA" /> <SelectedNodeStyle BackColor="#B5B5B5" Font-Underline="False" HorizontalPadding="0px" VerticalPadding="0px" /> <NodeStyle Font-Names="Tahoma" Font-Size="8pt" ForeColor="Black" HorizontalPadding="2px" NodeSpacing="0px" VerticalPadding="2px" /> </asp:TreeView> </td> <td style="width: 483px; height: 274px; background-color: #f5ffff"> <asp:Label ID="Label1" runat="server" ForeColor="#C0C0FF" Text="Label" Width="486px"></asp:Label><asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" DataSourceID="ObjectDataSource1" Height="277px" Width="486px"> <Columns> <asp:BoundField DataField="ID" HeaderText="编号" /> <asp:BoundField DataField="FileName" HeaderText="文件名称" /> <asp:BoundField DataField="UploadTime" HeaderText="上传日期" /> <asp:TemplateField HeaderText="下载"> <ItemTemplate> <a href='upload/<%#Eval("FileURL") %>'>下载</a> </ItemTemplate> </asp:TemplateField> <asp:TemplateField ShowHeader="False"> <ItemTemplate> <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Delete" OnClientClick="javascript:return confirm('你确认删除吗?');" Text="删除"></asp:LinkButton> </ItemTemplate> </asp:TemplateField> </Columns> <EmptyDataTemplate> <asp:Label ID="Label3" runat="server" Text="当前目录没有上传文件" Width="189px"></asp:Label> </EmptyDataTemplate> </asp:GridView> <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DeleteMethod="DeleteFile" InsertMethod="AddFile" SelectMethod="G