




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、案例16 Web系统安全和部署 授课课时:4课时(180分钟)216.1 案例描述 Web网站的安全最基本的是用户输入环节,要求具备防范SQL语句的注入式攻击的能力,以避免给Web系统带来严重的安全威胁。更进一步的可以通过ASP.NET和IIS提供的身份验证策略、授权策略等构建一个多层次的安全体系以保障Web系统的安全。SQL语句注入式攻击的示例如图所示 。案例描述 316.2 案例完成步骤16.2.1 使用参数化查询 1创建样例数据库 本案例要求在SQL Server 2005数据库管理系统中创建名称为Security的数据库,其中包含一个名称为tb_Users的数据表用来保存Web系统的用
2、户信息。创建数据库的脚本如下。 416.2 案例完成步骤16.2.1 使用参数化查询 2界面设计(1)创建一个名称为SecurityDemo的网站。(2)将SecurityDemo项目中的默认的Default.aspx改名为Login1.aspx。(3)布局页面Login1页面主要Label、TextBox、Button控件组成,这些控件的主要属性见下表。 516.2 案例完成步骤16.2.1 使用参数化查询 616.2 案例完成步骤16.2.1 使用参数化查询 最终得到的页面设计效果如图所示。该页面所对应form部分的代码参阅教材。 716.2 案例完成步骤16.2.1 使用参数化查询 3配
3、置Web.Config文件 本次案例要实现连接和操作数据库的功能,因此将数据库的连接字符串保存在Web.Config文件中。在Web.Config文件中配置连接字符串如下所示:其中SQL Server 2005数据库服务器名称为.sql2005,数据库名称为Security,登录用户名为sa,密码为123456。 816.2 案例完成步骤16.2.1 使用参数化查询 4实现普通登录功能 普通登录功能使用普通的方式构建SQL语句进行用户名和密码的验证,最终实现的普通登录按钮事件如下所示 916.2 案例完成步骤16.2.1 使用参数化查询 Login1.aspx运行后,输入用户名demo和密码d
4、emo,单击“普通登录”按钮,调用btnLogin_Click方法进行用户名和密码的验证,验证通过后在两个标签中分别显示登录成功信息和SQL语句信息,程序运行结果如图所示。 1016.2 案例完成步骤16.2.1 使用参数化查询 5实现安全登录功能 普通登录功能使用普通的方式构建SQL语句进行用户名和密码的验证,最终实现的安全登录按钮事件代码如下所示 。 1116.2 案例完成步骤16.2.1 使用参数化查询 Login1.aspx运行后,输入用户名demo和密码demo,单击“安全登录”按钮,调用btnLoginBetter方法进行用户名和密码的验证,验证通过后在两个标签中分别显示登录成功信
5、息和SQL语句信息(输入的用户名和密码受到保护),程序运行结果如图所示。1216.2 案例完成步骤16.2.2 使用表单身份验证 表单身份验证的开发步骤如下: 将IIS 配置为使用匿名访问; 将ASP.NET 配置为使用表单身份验证; 创建登录Web 表单并验证提供的凭据; 从自定义数据存储中检索角色列表; 创建表单身份验证票证(在票证中存储角色); 创建一个IPrincipal 对象; 将IPrincipal 对象放到当前的HTTP 上下文中; 基于用户名/角色成员身份对用户进行授权。 1316.2 案例完成步骤16.2.2 使用表单身份验证 1创建存储过程sp_getUserInfo 由于
6、要使用加密字符串,这里借助于存储过程来根据指定的用户名获得其密码。创建存储过程sp_getUserInfo的脚本如下: 1416.2 案例完成步骤16.2.2 使用表单身份验证 2配置Web.Config文件在Web.Config文件中添加启用Forms表单验证的语句如下: 由于使用相同的数据库,该实例使用的连接字符串的同上例,在此不做重复配置。 1516.2 案例完成步骤16.2.2 使用表单身份验证 3设计和实现注册页面(1)在SecurityDemo网站中新建名称为Register.aspx的Web页面。(2)设计注册页面Register页面主要Label、TextBox、Button和
7、验证控件组成,这些控件的主要属性见下表。 1616.2 案例完成步骤16.2.2 使用表单身份验证 最终得到的页面设计效果如图所示。 1716.2 案例完成步骤16.2.2 使用表单身份验证 1816.2 案例完成步骤16.2.2 使用表单身份验证 1916.2 案例完成步骤16.2.2 使用表单身份验证 程序运行后,输入用户名和密码(分别为formdemo),如图所示。单击“注册”按钮,首先由验证控件完成数据输入的合法性验证,再把用户名和加密后的密码写入到数据库,注册成功将会显示“注册成功”的信息,如图所示。 2016.2 案例完成步骤16.2.2 使用表单身份验证 在SQL Server
8、2005中查看到新注册的用户信息,我们发现该用户的u_Pass和u_SaltPass都已经被加密,如图所示。 2116.2 案例完成步骤16.2.2 使用表单身份验证 4设计和实现登录页面(Login2.aspx)(1)在SecurityDemo网站中新建名称为Login2.aspx的Web页面。(2)设计登录页面 Login2.aspx页面的设计与注册页面Register.aspx页面大同小异,主要增加了一个CheckBox用于选择是否保存Cookie,页面控件及其详细属性在此不再重复。最终得到的页面设计效果如图所示 。 2216.2 案例完成步骤16.2.2 使用表单身份验证 (3)实现注
9、册功能 本程序对输入的用户和密码进行验证,最终完成的“登录”按钮的事件代码如下: 2316.2 案例完成步骤16.2.2 使用表单身份验证 (3)实现注册功能 本程序对输入的用户和密码进行验证,最终完成的“登录”按钮的事件代码参阅教材。 2416.2 案例完成步骤16.2.2 使用表单身份验证 5设计和实现测试页面(Test.aspx)(1)在SecurityDemo网站中新建名称为Test.aspx的Web页面。(2)设计测试页面Test.aspx页面使用四个标签用于显示登录用户名和用户身份。并通过一个“注销”按钮返回。最终得到的页面设计效果如图所示。 2516.2 案例完成步骤16.2.2
10、 使用表单身份验证 (3)实现注销功能本程序用于显示已注册的用户名及其身份,并提供注销功能,最终完成的页面启动时和“注销”按钮的事件代码如下 2616.2 案例完成步骤16.2.2 使用表单身份验证 6运行程序 使用注册程序进行用户注册后,启动Login2.aspx程序,输入用户名和密码(分别为formdemo),如图所示。单击“登录”按钮,首先由验证控件完成数据输入的合法性验证,再进行用户名和密码验证,登录成功将会跳转到测试页面(Test.aspx)并显示登录用户的信息,如图所示。 2716.2 案例完成步骤16.2.3 发布与测试ASP.NET程序 1发布ASP.NET程序(1)打开“Se
11、curityDemo”网站,在“解决方案资源管理器”中,右键单击要发布的网站SecurityDemo,在弹出菜单中选择“发布网站”,如图所示。打开“发布网站”对话框。 2816.2 案例完成步骤16.2.3 发布与测试ASP.NET程序 (2)在“发布网站”对话框中,在该对话框中的“目标位置”文本框中输入或通过单击右侧的按钮选择要发布网站的目标位置,这里发布网站的目标位置为“e:Security”,如图所示。 2916.2 案例完成步骤16.2.3 发布与测试ASP.NET程序 (3)单击“确定”按钮,Microsoft Visual Studion 2005将编译网站的内容,并将编译的文件输
12、出到指定的文件夹中,在“输出”窗口将会显示编译的进度信息,如果编译时发生一个错误,“输出”窗口会报告该错误。发布成功后在目标文件夹(E:Security)可以查看到发布后的文件,如图所示 。 3016.2 案例完成步骤16.2.3 发布与测试ASP.NET程序 2测试发布的网站 网站发布完成后,可以通过Web服务器运行网站来对网站进行测试。要运行网站有两种方法可以实现,一是创建一个指向目标文件夹的IIS虚拟目录;二是将发布后的目标文件夹设置为Web共享。方法一:配置IIS虚拟目录使用IIS管理工具创建虚拟目录的主要操作步骤如下。(1)打开“控件面板”中的“管理工具”,双击“Internet信息
13、服务管理器”,打开 “Internet信息服务(IIS)管理器”对话框。(2)在“Internet信息服务(IIS)管理器”中,依次选择“网站”“默认网站”节点,单击鼠标右键,在弹出的菜单中,选择“新建”“虚拟目录”命令,如图所示。 3116.2 案例完成步骤16.2.3 发布与测试ASP.NET程序 3216.2 案例完成步骤16.2.3 发布与测试ASP.NET程序 (3)打下“虚拟目录创建向导”对话框,单击“下一步”按钮,打开“虚拟目录别名”对话框,在“别名”文本框中输入虚拟目录的别名,这里虚拟目录别名为“Security”,如图所示。然后单击“下一步”按钮,打开“虚拟内容目录”对话框,
14、这里指定虚拟目录站点的路径为“E:Security”,如图所示。 3316.2 案例完成步骤16.2.3 发布与测试ASP.NET程序 (4)完成虚拟目录路径设置之后,单击“下一步”按钮,打开“访问权限”对话框,选择相应的权限,如图所示。单击“下一步”按钮弹出“Internet管理器”对话框,选择“是”按钮,弹出“已完成虚拟目录创建向导”对话框,单击“完成”按钮,虚拟目录创建成功。返回“Internet信息服务”对话框。 3416.2 案例完成步骤16.2.3 发布与测试ASP.NET程序 方法二:设置Web共享首先选择Web项目所在的文件夹(如E:Security),然后右击文件夹,在打开的
15、快捷菜单中选择“共享和安全”命令或者选择“属性”命令打开“属性”对话框,切换到“Web共享”选项卡,如图所示。 3516.2 案例完成步骤16.2.4 打包与安装网站 1打包网站打包就是制作安装程序即将应用程序包装成易于部署的形式,包装好之后的应用程序可以方便地安装到目标服务器上。打包网站的操作步骤如下。(1)打开“SecurityDemo”网站。(2)选择“文件”“添加”“新建项目”命令。(3)打开“添加新项目”对话框,在“项目类型”列表中选择“其他项目类型”“安装和部署”节点,在右侧的“模板”列表中选择“Web安装项目”,在“名称”文本框中输入存放打包网站的文件夹名称,在“位置”文本框中输
16、入存放打包网站文件夹的目标地址,设置结果如图所示。 3616.2 案例完成步骤16.2.4 打包与安装网站 3716.2 案例完成步骤16.2.4 打包与安装网站 (4)单击“确定”按钮,Web安装项目已经添加到“解决方案资源管理器”中,并且“文件系统编辑器”处于打开状态,如图所示。3816.2 案例完成步骤16.2.4 打包与安装网站 (5)在“文件系统编辑器”中右键单击“Web应用程序文件夹”,在弹出的快捷菜单中选择“添加”“项目输出”命令,如图所示 。3916.2 案例完成步骤16.2.4 打包与安装网站 (6)在打开的“添加项目输出组”对话框中,各选项保留默认值,如图所示。(7)单击“
17、确定”按钮,即可将“内容文件”添加到打包网站中。在“文件系统编辑器”中将会出现内容输出文件 。(8)选择“生成”“生成SecuritySetup”命令,生成安装文件,生成安装项目文件夹中的内容如图所示。 4016.2 案例完成步骤16.2.4 打包与安装网站 2安装网站安装该网站的具体操作步骤如下:(1)打开安装程序生成目录,在“Debug”文件夹双击“setup.exe”,打开“安装向导欢迎”对话框。(2)单击“下一步”按钮弹出“选择安装地址”对话框,设置虚拟目录为Security,其他各项都使用默认值,如图所示。 4116.2 案例完成步骤16.2.4 打包与安装网站 (3)单击“下一步”
18、按钮弹出“确认安装”对话框,单击“下一步”按钮进行项目安装,项目安装完成后,弹出“安装完成”对话框。(4)单击“关闭”按钮,完成项目安装。项目安装完成后,在“Internet信息服务”对话框中就会出现“Security”虚拟目录,同时在IIS的主目录下可以找到“Security”文件夹,该文件夹下就会有网站运行的基本文件。通过浏览器即可访问该网站的相关页面。 4216.3 知识链接16.3.1 SQL注入式攻击 1什么是SQL注入式攻击 所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在某些表单中,用户输入的内容直接用
19、来构造(或者影响)动态SQL命令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式攻击。 4316.3 知识链接16.3.1 SQL注入式攻击 2如何有效防范SQL注入式攻击 (1)对于动态构造SQL查询的场合,可以使用下面的方法: 方法一:替换SQL语句中的单引号。方法二:删除用户输入内容中的所有连字符。防止攻击者构造出类如“SELECT * from tb_Users WHERE u_Name = liuzc - AND u_Pass =”之类的查询,因为这类查询的后半部分已经被注释掉,不再有效,攻击者只要知道一个合法的用户登录名称,根本不需要知道用户的密码就可以顺利获得访问权限。 方法三:对于用来执行查询的数据库帐户,限制其权限。用不同的用户帐户执行查询、插入、更新、删除操作。由于隔离了不同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 原药材销售合同范本
- 劳动合同范本内容模板
- 医院医药采购合同范本
- haccp培训合同范本
- 化肥购买销售合同范本
- 劳动合同范例 日照
- 加盟药店转让合同范本
- 医院购置器械合同范本
- 医疗门诊用工合同范例
- 单位销售人员聘用合同范本
- 中央2025年中国科协所属单位招聘社会在职人员14人笔试历年参考题库附带答案详解-1
- 2024年潍坊工程职业学院高职单招语文历年参考题库含答案解析
- 殡仪服务员职业技能鉴定考试题(附答案)
- 电动葫芦吊装方案计划
- 2025年山东电工电气集团招聘笔试参考题库含答案解析
- 《建立特种设备“日管控、周排查、月调度”工作机制》专题培训
- 《自然语言处理》课件
- 压裂设备专用件项目评价分析报告
- 2025上半年重庆万州区事业单位招聘拟聘用人员历年管理单位笔试遴选500模拟题附带答案详解
- 造价咨询服务方案进度计划安排及保证措施
- 公路养护工安全操作规程模版(2篇)
评论
0/150
提交评论