网站后台系统实验报告.docx
- 文档编号:7927083
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:40
- 大小:271.28KB
网站后台系统实验报告.docx
《网站后台系统实验报告.docx》由会员分享,可在线阅读,更多相关《网站后台系统实验报告.docx(40页珍藏版)》请在冰豆网上搜索。
网站后台系统实验报告
一.背景介绍
1.数据安全的重要性及面临的威胁
随着信息化,电子化进程的发展,数据越来越成为企业,事业单位日常运作的核心决策发展的依据。
由于网络的发展,电子商务的兴起,网络安全也越来越引起人们的重视,归根到底网络安全的核心也就是数据的安全。
有机构研究sample明:
丢失300MB的数据对于市场营销部门就意味着13万元人民币的损失。
对财务部门就意味着16万的损失,对工程部门来说损失可达80万。
而企业丢失的关键数据如果15天内仍得不到恢复,企业就有可能被淘汰出局。
CIH和爱虫给国际社会造成损失多达数十亿美金。
国内有客户误删有效数据由于没有备份造成停业手工重新录入,给企业造成损失数十万元。
这种教训在国内时有发生,这都说明了保证信息数据安全的重要性。
原则上,凡是造成对数据库内存储数据的非授权的访问—读取,或非授权的写入—增加,删除,修改等,都属于对数据库的数据安全造成了威胁或破坏.另一方面,凡是正常业务需要访问数据库时,令授权用户不能正常得到数据库的数据服务时,也称之为对数据库的安全形成了威胁或破坏.因为很显然,这两种情况都会对数据库的合法用户的权益造成侵犯,或者是信息的被窃取,或者是由于信息的破坏而形成提供错误信息的服务,或者是干脆拒绝提供服务。
数据库是应用程序级攻击的主要目标。
应用程序级攻击用于利用数据访问代码中的漏洞并获取对数据库未授权的访问。
数据访问代码面临的主要威胁包括:
SQL注入,配置数据的泄露,敏感应用程序数据的泄露,数据库架构和连接详细信息的泄露,未授权的访问,网络窃听。
2.构建安全的数据访问的方法
一般在开始编写代码之前,在设计中需要考虑的注意事项有使用Windows身份验证,使用最小特权帐户,使用存储过程,保护所存储的敏感数据,使用单独的数据访问程序集等。
在使用ASP.NET设计应用程序,其提供的身份认证和授权机制也能保护数据的安全,IIS和数据库本身也能对设定访问权限,可以结合起来共同维护数据的访问安全。
二.课题交代
我所要完成的是数据访问安全的设计,主要完成对用户访问权限的管理,即通过对不同的用户赋予不同的访问权限来维护数据的安全。
在这段时间内,我通过查找资料,查看相关书籍,学习了数据访问的机制和原理和编程技术,通过分析一些实例程序,我掌握了如何使用进行应用程序的设计,从而完成了对用户访问权限的安全管理,达到了数据访问安全的目的。
三.系统设计
1.开发环境
我所选用的技术平台是微软的.NET框架,开发语言是ASP.NET1.0技术框架,实现语言完全采用C#语言,C#语言是为.NET量身打造的语言,是一种简单,类型安全,平台独立的新型面向对象的编程语言,其融合了VB的高效和C++的强大,是一种面向对象的开发语言,包括了单重继承,接口,编译成中间格式等特点,可以大范围的适用于高层商业应用。
开发工具为visual和SQLServer2000。
开发的系统采用B/S结构,分为表示层,业务逻辑层和数据访问层。
其中用户表示层为客户端提供对应用程序的访问,业务逻辑层实现应用程序的业务功能,数据访问层为业务逻辑层或表示层提供数据服务。
2.需求分析
(1).系统管理员能对系统中所有的模块进行管理,包括查看模块信息,修改模块信息,删除不需要的模块。
(2).系统管理员能查看系统日志,包括登录日志和操作日志。
(3)系统管理员能进行权限管理,用户需要身份验证才能进入系统,用户进入系统后每一个操作都进行权限判断,禁止任何越权操作,有效地保护系统数据的安全性。
可以动态的对用户进行实时的权限修改。
(4).登录用户能随时更改自己的密码。
3.总体设计
(1)UML关系图
进入子模块时进行权限判断,若登录用户不具备该模块的最低操作权限,提示越权信息,禁止进入。
用户进入子模块时只能用对其开放的功能,发现越权行为时给出警告。
(2)功能设计
1.登录日志
记录所有用户的登录信息,包括帐号,时间,主机IP,登录是否成功,还可以让系统管理员删除过期日志信息。
2.操作日志
提供对用户重要操作行为的记录,系统管理员可通过其查看用户对数据库的关键操作,及时发现用户的非法操作,保证系统数据的安全。
还可以让系统管理员删除过期操作信息。
3.密码修改
提供登录用户修改自己密码的功能。
4.权限管理
包括模块管理,角色管理和用户管理。
模块管理:
提供对模块的添加,修改和删除,建立和角色的关系信息,定义基本权限,对每个模块的操作权限分5个级别:
浏览,查询,添加,修改和删除。
角色管理:
提供对角色的添加,修改和删除,建立和模块的关系信息,建立和用户的关系信息。
用户管理:
提供对用户基本信息的修改和删除功能,添加用户由系统管理员提供,建立和角色的关系信息。
(3)数据库设计与实现
1.登录日志信息表:
存放用户登录相关信息。
2.操作日志信息表:
存放用户关键操作的相关信息。
3.院系基本信息表:
存放院系的基本信息。
4.人员基本信息表:
存放用户的登录名,密码及用户的基本信息。
5.模块基本信息表:
存放模块的名称,描述等。
6.角色基本信息表:
存放角色的名称,描述等。
7.用户角色关系表:
存放用户和角色对应关系的信息。
8.模块角色关系表:
存放模块和角色的对应关系的信息。
四.详细设计
(1).数据库的逻辑设计
(2).数据库物理设计
1.登录日志信息表
2.操作日志信息表
3.院系基本信息表
4.人员基本信息表
5.模块基本信息表
6.角色基本信息表
7.用户角色关系表
8.模块角色关系表
注:
用整数表示权限,数字越大,权限越大,0浏览1查询2添加3修改4删除.
(3)系统主要流程图
五.具体实现
1.登录日志页面UserLog.aspx
这个页面主要部分运用了一个DataGridWeb服务控件,用于显示所有登录信息,一个CheckBoxWeb服务控件,用于选择当前页面的所有记录,一个ImageButton图像按钮Web服务控件,用于删除登录日志操作。
后台代码主要完成DataGrid控件数据的绑定,选取页面所有记录操作,以及删除选定的记录。
页面权限管理由基类直接提供,页面载入时,提供给基类页面模块名称,基类根据模块名称返回权限代码,页面根据权限代码控制用户的所有操作,如果用户对此模块不具备最低操作权限,则禁止用户进入页面,转到登录页面。
当用户进入模块后,用户的所有操作都要经过权限判断,不具备操作权限时则给出提示信息,禁止用户使用。
页面如下:
主要代码如下:
页面载入时,首先调用基类页面初始化函数,设置模块名称,并要求身份验证。
privatevoidPage_Load(objectsender,System.EventArgse)
{
this.PageBegin("登录日志",true);
if(Page.IsPostBack==false)
{
DataGridLogininfoband();
}
}
事件处理,包括页面载入,按钮点击事件,选择时间等。
privatevoidInitializeComponent()
{
this.Load+=newSystem.EventHandler(this.Page_Load);
this.DataGridLogininfo.PageIndexChanged+=newSystem.Web.UI.WebControls.DataGridPageChangedEventHandler(this.DataGridLogininfo_PageIndexChanged);
this.DataGridLogininfo.ItemDataBound+=newSystem.Web.UI.WebControls.DataGridItemEventHandler(this.DataGridLogininfo_ItemDataBound);
this.ImgBdel.Click+=newSystem.Web.UI.ImageClickEventHandler(this.ImgBdel_Click);
this.CheckBox2.CheckedChanged+=newSystem.EventHandler(this.CheckBox2_CheckedChanged);
}
数据绑定,并在DataGrid增加一序列号。
publicvoidMyBindData()
{
DbManagerLogininfomyclass=newDbManagerLogininfo();
DataTablemytable=myclass.Getalllogininfo();
DataColumnmycolumn=mytable.Columns.Add("number",System.Type.GetType("System.String"));
for(inti=0;i { mytable.Rows[i]["number"]=(i+1).ToString(); } DataGridLogininfo.DataSource=mytable; DataGridLogininfo.DataBind(); } 实现删除登录日志功能 publicvoidDelLoginLog(stringstrLoginID) { DbManagerLogininfomyclass=newDbManagerLogininfo(); myclass.dellogininfo(strLoginID); } 删除按钮单击事件,首先根据权限代码EmpRightCode进行权限判断,在本系统中权限共分为5级: 浏览,查询,添加,修改和删除,删除权限对应权限代码为4,为最高权限。 如果用户不具备删除权限,给出提示信息,不执行删除操作。 privatevoidImgBdel_Click(objectsender,System.Web.UI.ImageClickEventArgse) { if(this.EmpRightCode==4) { foreach(DataGridItemthisIteminDataGridLogininfo.Items) { if(((CheckBox)thisItem.Cells[0].Controls[1]).Checked) { stringstrLoginID=DataGridLogininfo.DataKeys[thisItem.ItemIndex].ToString(); DelLoginLog(strLoginID); } } this.WriteOptLog("删除登录日志信息"); JScript.Alert("删除成功! "); if(DataGridLogininfo.CurrentPageIndex==DataGridLogininfo.PageCount-1) DataGridLogininfo.CurrentPageIndex=DataGridLogininfo.CurrentPageIndex-1; MyBindData(); } else { JScript.Alert("您没有权限进行此操作! "); } } DataGrid控件页码改变事件处理方法 privatevoidDataGridLogininfo_PageIndexChanged(objectsource,System.Web.UI.WebControls.DataGridPageChangedEventArgse) {DataGridLogininfo.CurrentPageIndex=e.NewPageIndex; MyBindData(); } CheckBox选择改变事件,使得选中此选择控件,DataGrid控件中的每一行中的选择控件均被选中。 privatevoidCheckBox2_CheckedChanged(objectsender,System.EventArgse) { foreach(DataGridItemthisIteminDataGridLogininfo.Items) { ((CheckBox)thisItem.Cells[0].Controls[1]).Checked=CheckBox2.Checked; } } 数据访问层由DbManagerLogininfo.cs类文件实现,包括读取所有登录日志和删除登录日志。 publicclassDbManagerLogininfo { stringSTRCON=ConfigurationSettings.AppSettings["ConnectionString"]; SqlCommandmycm; DataSetmyds; SqlDataAdaptermyda; publicDbManagerLogininfo() { mycm=newSqlCommand(); mycm.Connection=newSqlConnection(STRCON); mycm.CommandType=CommandType.StoredProcedure; mycm.Connection.Open(); myds=newDataSet(); myda=newSqlDataAdapter(); myda.SelectCommand=mycm; } publicDataTableGetalllogininfo() { mycm.CommandText="GetLogInfo"; myda.Fill(myds,"GetLogInfo"); returnmyds.Tables["GetLogInfo"]; } publicvoiddellogininfo(stringLoginID) { mycm.CommandText="delete_LogInfo"; mycm.Parameters.Add(newSqlParameter("@LoginID_1",SqlDbType.VarChar,50)); mycm.Parameters[0].Value=LoginID; intj=mycm.ExecuteNonQuery(); } } 2.操作日志页面 此页面和登录页面所用的控件相同,后台代码主要完成DataGrid控件数据的绑定,选取页面所有记录操作,以及删除选定的记录。 后台代码和登录日志的也很相似,这里就不列出具体的代码。 页面如下: 点击删除按钮后,显示页面: 如果没有权限的话则弹出一下对话框: 数据访问层主要完成操作日志的读取和删除操作,其他涉及到的功能和登录日志模块基本相同。 从数据库中读取所有操作日志信息: publicDataTableReadOperationLog() { SqlConnectionmyConnection=newSqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommandmyCommand=newSqlCommand("sysReadOptLog",myConnection); myCommand.CommandType=CommandType.StoredProcedure; DataSetmyds=newDataSet(); SqlDataAdaptermyda=newSqlDataAdapter(); myda.SelectCommand=myCommand; myConnection.Open(); myda.Fill(myds,"GetLogInfo"); myConnection.Close(); returnmyds.Tables["GetLogInfo"]; } 根据日志ID号删除相应日志信息。 publicDataTableReadOperationLog() { SqlConnectionmyConnection=newSqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); SqlCommandmyCommand=newSqlCommand("sysReadOptLog",myConnection); myCommand.CommandType=CommandType.StoredProcedure; DataSetmyds=newDataSet(); SqlDataAdaptermyda=newSqlDataAdapter(); myda.SelectCommand=myCommand; myConnection.Open(); myda.Fill(myds,"GetLogInfo"); myConnection.Close(); returnmyds.Tables["GetLogInfo"]; } 2.模块管理页面 模块管理分两个页面Moduleadmin.aspx和FuncRightSet.aspx,前者是主页面,提供模块的删除和添加功能,后者提供模块的编辑功能,可以修改模块的基本信息和修改此模块和角色的关联权限信息。 Moduleadmin.aspx页面包括两部分: 模块列表和模块添加。 模块列表是用DataList控件实现的,包括两个图像按钮,代表编辑和删除功能,模块名称用DataBinder.Eval进行绑定。 模块添加是由两个文本Web控件和一个LinkbuttonWeb控件实现。 其后台代码主要完成页面载入时的数据绑定和各个按钮事件的实现,每个操作均要根据权限代码进行权限判断。 页面载入和事件处理代码和登录日志及操作日志类似,这里不列出。 页面如下: 点击编辑按钮后,跳转到如下页面: 本页面的主要代码及功能如下: 从数据库中取得所有的模块信息数据,并显示在页面上。 privatevoidBindData() { AdminDBadmin=newAdminDB(); FuncList.DataSource=admin.GetAllFuncs(); FuncList.DataBind(); } FuncList控件中的ItemCommand事件函数,用来完成个记录中的按钮事件。 privatevoidFuncList_ItemCommand(objectsender,DataListCommandEventArgse) { AdminDBadmin=newAdminDB(); intFuncID=(int)FuncList.DataKeys[e.Item.ItemIndex]; if(e.CommandName=="edit") { if(this.EmpRightCode>=3) { Response.Redirect("FuncRightSet.aspx? funcid="+FuncID,false); } else { JScript.Alert("您没有权限进行此操作! "); } } elseif(e.CommandName=="delete") { if(this.EmpRightCode==4) { if(admin.DeleteFuncRoleUser(FuncID,"func")) { this.WriteOptLog("删除模块信息"); JScript.Alert("删除成功! "); BindData(); } else JScript.Alert("删除失败! "); } else { JScript.Alert("您没有权限进行此操作! "); } } } 添加模块信息按钮单击事件处理方法: privatevoidAddFuncBtn_Click(objectsender,System.EventArgse) { if(this.EmpRightCode>=2) { if(FuncName.Text.ToString()! ="") { boolresult=(newAdminDB()).InsertFuncInfo(FuncName.Text.ToString(),FuncDescription.Text.ToString()); if(result==false) JScript.Alert("添加失败! "); else { this.WriteOptLog("添加模块角色关系信息"); JScript.Alert("添加成功! "); } BindData(); FuncName.Text=""; FuncDescription.Text=""; } else { JScript.Alert("您没有权限进行此操作! "); } } } 给删除按钮添加删除确认对话框: privatevoidOnAttachScript(objectsender,System.Web.UI.WebControls.DataListItemEventArgse) { if(e.Item.ItemType==ListItemType.Item|| e.Item.ItemType==ListItemType.AlternatingItem) { ImageButtonbutton=(ImageButton)e.Item.FindControl(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网站 后台 系统 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)