软件安全3.docx
《软件安全3.docx》由会员分享,可在线阅读,更多相关《软件安全3.docx(23页珍藏版)》请在冰豆网上搜索。
软件安全3
软件工程专业类课程
实验报告
课程名称:
软件安全技术
学 院:
信息与软件工程学院
专 业:
软件技术
学生姓名及学号:
卢泓宇2011222020025
指导教师:
郭建东
评 分:
日 期:
2014年 12月 6日
电子科技大学
实验报告
1、实验名称:
信息系统安全实验
2、实验时间和地点
2014年12月6日;4学时;实验楼303
3、实验目的
掌握信息系统的安全需求,充分了解MIS的登录控制机制,掌握登录控制在信息系统中应完成的主要内容是需要的数据,了解信息系统登录控制开发的主要方式。
4、实验设备与环境
1)基本环境要求
计算机实验室,40台以上计算机。
2)最低设备要求
硬盘:
10G以上;
内存:
512M以上;
CPU:
INTEL,讯驰或酷睿平台
3)系统平台要求
WINDOWSXP以上。
4)软件、硬件及相应工具要求
TAM2.0以上版本。
5、实验内容及要求
1)实验基础(必要的基础知识)
系统是按照一定的结构组织起来的、完成某种功能目标的多种相互作用、相互依存的元素组成的一个有机整体。
系统的主要特性可以概括为:
整体性—系统的各个部分一定以整体目标为目标,追求全局最优;
目的性—一个系统一定是具有明确目标的,并完成一定的功能;
层次性—一个系统可以分为若干层次和子系统;
边界性—每一个系统都能够明显地区别于其他系统,系统之间有明确的界限;
关联性—系统包括若干元素,元素之间存在一定的关联性;
环境性—系统处于一定的环境之中并受环境影响。
而IS的主要特征包括:
一定是依赖于计算机的;
涉及了计算机的软件和硬件;
实现数据的采集、传递、加工、处理功能。
在一个信息系统的实施过程中,有一些非常典型的问题[3,4,5],通过对文献[3,4,5]的研究并结合工程经验,可以看到对一个信息系统的安全威胁来自于系统的内部和外部:
外部的恶意攻击者;
外部的意外闯入者;
内部的合法授权用户;
内部不当获得授权的用户。
在系统实施中,IS的安全问题常常体现为:
如何使经理或管理者消除对敏感信息失密的顾虑?
系统管理员是否可信?
系统第一次如何启动?
即如何使用户获得第一次权限?
如何建立一个可信的口令机制?
如何确认某个操作人员的行为?
在登录控制界面,完成的主要功能包括:
口令验证;
口令修改;
口令数据的加密;
登录时间记录。
关于登录控制的设计主要考虑:
(1)用户ID
输入用户ID,从权限数据中提取出相应的用户名。
采用用户编号的原因是回避重名,简化输入,同时用户号本身也可以增加一定的安全性。
(2)用户修改口令,而不是系统管理员
系统管理员对用户授权,但是口令由用户在用户界面输入,并加密存储至后台数据库中,以避免系统管理员获取用户口令造成泄密。
(3)初始口令的安全
系统的第一次运行关键是初始口令的赋予,由信息主管(或其他高层)完成用户身份的确认,同时要求用户第一次登录时必须更改初始口令。
(4)口令安全
系统口令安全机制要求:
口令长度限制;
口令字符集限制;
口令有效期限制。
(5)用户封锁
当出现用户多次登录系统失败的情况时,系统将锁定用户的操作并提示,解锁过程必须由系统管理员完成。
2)实验步骤
第1步:
设计和登录控制相关的数据库,写出数据库设计文档;
第2步:
利用ACCESS构建数据库;
第3步:
配置ODBC数据源,作为访问数据库之用;
第4步:
利用VisualBasic或者VisualC++开发系统登录窗口;
第5步:
同上,开发完成后台数据库管理窗口,实现权限管理;
第6步:
验证登录过程,检查数据库中的登录数据。
第7步:
完成实验报告,写出自己的设计思路和对信息系统权限及登录控制内容的考虑,写明自己设计的理由。
3)实验注意事项
(1)数据库的设计应该在课下完成;
(2)文档的写作在课下完成,注意提交;
(3)建议采用VisualBasic实现,开发效率较高。
三、实验开设方式
1)小组实验,建议每组人数3人;
2)无实验授课;
3)无实验占有时间。
用户和管理员登录界面以及后台代码
前台界面:
Class="MainWindow"
xmlns="
xmlns:
x="
Title="MainWindow"Height="320"Width="303">
户§登?
录?
"Height="39"HorizontalAlignment="Left"Margin="91,12,0,0"Name="Label1"VerticalAlignment="Top"Width="100"FontSize="20"/>
户§名?
:
阰"Height="28"HorizontalAlignment="Left"Margin="12,75,0,0"Name="Label2"VerticalAlignment="Top"/>
:
"Height="28"HorizontalAlignment="Left"Margin="12,144,0,0"Name="Label3"VerticalAlignment="Top"/>
员±登?
录?
"Height="26"HorizontalAlignment="Left"Margin="12,190,0,0"Name="CheckBox1"VerticalAlignment="Top"FontSize="12"/>
密ü码?
"Height="23"HorizontalAlignment="Left"Margin="12,242,0,0"Name="Button1"VerticalAlignment="Top"Width="98"Click="changePass"/>
录?
"Height="23"HorizontalAlignment="Left"Margin="171,242,0,0"Name="Button2"VerticalAlignment="Top"Width="98"Click="login"/>
后台代码:
ImportsSystem
ImportsSystem.Data.OleDb
ImportsSystem.Windows.Data
ImportsSystem.Data
ImportsSystem.Data.SqlClient
ClassMainWindow
PrivateSubchangePass(ByValsenderAsSystem.Object,ByValeAsSystem.Windows.RoutedEventArgs)
DimchangePassAsWindow1=NewWindow1()
changePass.Show()
Close()
EndSub
PrivateSublogin(ByValsenderAsSystem.Object,ByValeAsSystem.Windows.RoutedEventArgs)
DimuserAsString=TextBox1.Text
DimpassAsString=PasswordBox1.Password
DimsqlAsString="selectpassworldfromDatabase3.userwhereUname="+"'"+user+"';"
Ifuser="root"Andpass=""AndCheckBox1.IsCheckedThen
DimadminAsadmin=Newadmin()
admin.Show()
Close()
Else
DimrealPassAsString=fillDataGridView(sql)
IfrealPass<>FalseAndrealPass=passThen
MessageBox.Show("密ü码?
正y确ā?
)
Else
MessageBox.Show("密ü码?
错洙?
误ó或ò用?
户§名?
错洙?
误ó")
EndIf
EndIf
EndSub
PrivateFunctiongetAccessConnection()AsOleDbConnection
DimdbConnectionStringAsString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=|DataDirectory|\Database3.mdb;PersistSecurityInfo=true"
DimdbConnectionAsOleDbConnection=NewOleDbConnection(dbConnectionString)
Try
dbConnection.Open()
CatchExAsException
MessageBox.Show(Err.Description)
EndTry
ReturndbConnection
EndFunction
PrivateFunctionfillDataGridView(ByValsqlStrAsString)
DimDataAdapterAsNewOleDbDataAdapter
DimdataSetAsNewDataSet
DimDataGridAsNewDataGrid
DimdbConnectionAsOleDbConnection=getAccessConnection()
IfdbConnection.State.ToString="Closed"Then
MsgBox(Chr(13)&"access数簓据Y库a连?
接ó失骸?
败悒?
"&Chr(13),,"警ˉ告?
")
ReturnFalse
EndIf
DataAdapter.SelectCommand=NewOleDbCommand(sqlStr,dbConnection)
Try
DataAdapter.Fill(dataSet,"Table")
REMDataGrid.DataSource=dataSet.Tables("Table").DefaultView
DimdataTableAsDataTable=dataSet.Tables("Table")
DimrowAsDataRow
ForEachrowIndataTable.Rows
DimcolumnAsDataColumn
ForEachcolumnIndataTable.Columns
Returnrow(column)
Nextcolumn
Nextrow
ReturnFalse
CatchExAsException
MsgBox(Err.Description)
ReturnFalse
Finally
dataSet.Dispose()
EndTry
EndFunction
EndClass
管理员界面
前台代码:
Class="admin"
xmlns="
xmlns:
x="
Title="admin"Height="300"Width="420"Loaded="Window_Loaded">
员±登?
录?
"Height="28"HorizontalAlignment="Left"Margin="151,12,0,0"Name="Label1"VerticalAlignment="Top"Width="106"/>
选?
"Height="16"HorizontalAlignment="Left"Margin="24,50,0,0"Name="CheckBox1"VerticalAlignment="Top"/>
除y"Height="23"HorizontalAlignment="Left"Margin="71,46,0,0"Name="Button1"VerticalAlignment="Top"Width="50"Click="Button1_Click"/>
密ü码?
"Height="23"HorizontalAlignment="Left"Margin="127,46,0,0"Name="Button2"VerticalAlignment="Top"Width="57"Click="Button2_Click">
SelectionUnit="FullRow"SelectionMode="Single"CanUserAddRows="False">
择?
"Width="40"IsReadOnly="False"/>
户§名?
"Width="100"Binding="{BindingName}"IsReadOnly="True"/>
"Width="100"Binding="{BindingPass}"IsReadOnly="True"/>
否?
锁?
定¨"Width="85"Binding="{BindingLock}"IsReadOnly="True"/>
加ó用?
户§"Height="23"HorizontalAlignment="Left"Margin="190,46,0,0"Name="Button3"VerticalAlignment="Top"Width="62"Click="Button3_Click"/>
定¨用?
户§"Height="23"HorizontalAlignment="Left"Margin="258,46,0,0"Name="Button4"VerticalAlignment="Top"Width="63"Click="Button4_Click"/>
"Height="23"HorizontalAlignment="Left"Margin="327,46,0,0"Name="Button5"VerticalAlignment="Top"Width="51"Click="Button5_Click"/>
Name="popup"PopupAnimation="Fade"PlacementTarget="{BindingElementName=Button2}"Placement="Center"AllowsTransparency="True"StaysOpen="False"IsOpen="False"Width="250"Height="150">
修T改?
"Height="38"HorizontalAlignment="Center"Name="Label2"VerticalAlignment="Top"FontSize="16"/>
密ü码?
:
"Height="38"HorizontalAlignment="Left"Name="Label3"VerticalAlignment="Top"FontSize="11"Width="60"Margin="10000">
认?
密ü码?
:
"Height="38"HorizontalAlignment="Left"Name="Label4"VerticalAlignment="Top"FontSize="11"Width="60"Margin="10000">
认?
"Height="23"HorizontalAlignment="Left"Name="Button6"VerticalAlignment="Top"Width="57"Click="Button6_Click"Margin="400200">
消?
"Height="23"HorizontalAlignment="Right"Name="Button7"VerticalAlignment="Top"Width="57"Click="Button7_Click"Margin="20000">
后台代码:
ImportsSystem
ImportsSystem.Data.OleDb
ImportsSystem.Windows.Data
ImportsSystem.Data
ImportsSystem.Data.SqlClient
ImportsSystem.Collections
ImportsSystem.Collections.ObjectModel
PublicClassadmin
PubliclistAsObservableCollection(Ofmember)=NewObservableCollection(Ofmember)()
PrivateSubWindow_Loaded(ByValsenderAsSystem.Object,ByValeAsSystem.Windows.RoutedEventArgs)
DimsqlAsString="select*fromDatabase3.user"
DimresultAsBoolean=False
result=fillDataGrid(sql,list)
DataGrid1.DataContext=list
Ifresult=FalseThen
MessageBox.Show("没?
有瓺用?
户§")
EndIf
EndSub
PrivateSubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.Windows.RoutedEventArgs)
EndSub
PrivateSubButton2_Click(ByValsenderAsSystem.Object,ByValeAsSystem.Window