1、ASP.NETASP.NET应用开发教程应用开发教程案例16 Web系统安全和部署 授课课时:授课课时:4 4课时(课时(180180分钟)分钟)216.1 案例描述 Web网站的安全最基本的是网站的安全最基本的是用户输入环节,要求具备防范用户输入环节,要求具备防范SQL语句的注入式攻击的能力,语句的注入式攻击的能力,以避免给以避免给Web系统带来严重的系统带来严重的安全威胁。更进一步的可以通安全威胁。更进一步的可以通过过ASP.NET和和IIS提供的身份提供的身份验证策略、授权策略等构建一验证策略、授权策略等构建一个多层次的安全体系以保障个多层次的安全体系以保障Web系统的安全。系统的安全。
2、SQL语句注语句注入式攻击的示例如图所示入式攻击的示例如图所示。案例描述案例描述 316.2 案例完成步骤16.2.1 16.2.1 使用参数化查询使用参数化查询 1创建样例数据库创建样例数据库 本案例要求在本案例要求在SQL Server 2005数据库管理系统中创建名称为数据库管理系统中创建名称为Security的数据库,其中包含一个名称为的数据库,其中包含一个名称为tb_Users的数据表用来保存的数据表用来保存Web系统的用户信息。创建数据库的脚本如下。系统的用户信息。创建数据库的脚本如下。416.2 案例完成步骤16.2.1 16.2.1 使用参数化查询使用参数化查询 2界面设计界面
3、设计(1)创建一个名称为)创建一个名称为SecurityDemo的网站。的网站。(2)将)将SecurityDemo项目中的默认的项目中的默认的Default.aspx改名为改名为Login1.aspx。(3)布局页面)布局页面Login1页面主要页面主要Label、TextBox、Button控件组成,这些控件的主要控件组成,这些控件的主要属性见下表。属性见下表。516.2 案例完成步骤16.2.1 16.2.1 使用参数化查询使用参数化查询 616.2 案例完成步骤16.2.1 16.2.1 使用参数化查询使用参数化查询 最终得到的页面设计效果如图所示。该页面所对应最终得到的页面设计效果如
4、图所示。该页面所对应form部分的代码部分的代码参阅教材。参阅教材。716.2 案例完成步骤16.2.1 16.2.1 使用参数化查询使用参数化查询 3配置配置Web.Config文件文件 本次案例要实现连接和操作数据库的功能,因此将数据库的连接字符本次案例要实现连接和操作数据库的功能,因此将数据库的连接字符串保存在串保存在Web.Config文件中。在文件中。在Web.Config文件中配置连接字符串如文件中配置连接字符串如下所示:下所示:其中其中SQL Server 2005数据库服务器名称为数据库服务器名称为.sql2005,数据库名称为,数据库名称为Security,登录用户名为,登录
5、用户名为sa,密码为,密码为123456。816.2 案例完成步骤16.2.1 16.2.1 使用参数化查询使用参数化查询 4实现普通登实现普通登录功能录功能 普通登录功能普通登录功能使用普通的方式使用普通的方式构建构建SQL语句进语句进行用户名和密码行用户名和密码的验证,最终实的验证,最终实现的普通登录按现的普通登录按钮事件如下所示钮事件如下所示 916.2 案例完成步骤16.2.1 16.2.1 使用参数化查询使用参数化查询 Login1.aspx运行后,输入用户名运行后,输入用户名demo和密码和密码demo,单击,单击“普普通登录通登录”按钮,调用按钮,调用btnLogin_Click
6、方法进行用户名和密码的验证,方法进行用户名和密码的验证,验证通过后在两个标签中分别显示登录成功信息和验证通过后在两个标签中分别显示登录成功信息和SQL语句信息,程语句信息,程序运行结果如图所示。序运行结果如图所示。1016.2 案例完成步骤16.2.1 16.2.1 使用参数化查询使用参数化查询 5实现安全登录功能实现安全登录功能 普通登录功能使用普通登录功能使用普通的方式构建普通的方式构建SQL语语句进行用户名和密码的句进行用户名和密码的验证,最终实现的安全验证,最终实现的安全登录按钮事件代码如下登录按钮事件代码如下所示所示。1116.2 案例完成步骤16.2.1 16.2.1 使用参数化查
7、询使用参数化查询 Login1.aspx运行后,输入用户名运行后,输入用户名demo和密码和密码demo,单击,单击“安安全登录全登录”按钮,调用按钮,调用btnLoginBetter方法进行用户名和密码的验证,方法进行用户名和密码的验证,验证通过后在两个标签中分别显示登录成功信息和验证通过后在两个标签中分别显示登录成功信息和SQL语句信息(输语句信息(输入的用户名和密码受到保护),程序运行结果如图所示。入的用户名和密码受到保护),程序运行结果如图所示。1216.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 表单身份验证的开发步骤如下:表单身份验证的开发步骤如下
8、:l 将将IIS 配置为使用匿名访问;配置为使用匿名访问;l 将将ASP.NET 配置为使用表单身份验证;配置为使用表单身份验证;l 创建登录创建登录Web 表单并验证提供的凭据;表单并验证提供的凭据;l 从自定义数据存储中检索角色列表;从自定义数据存储中检索角色列表;l 创建表单身份验证票证(在票证中存储角色);创建表单身份验证票证(在票证中存储角色);l 创建一个创建一个IPrincipal 对象;对象;l 将将IPrincipal 对象放到当前的对象放到当前的HTTP 上下文中;上下文中;l 基于用户名基于用户名/角色成员身份对用户进行授权。角色成员身份对用户进行授权。1316.2 案例
9、完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 1创建存储过程创建存储过程sp_getUserInfo 由于要使用加密字符串,这里借助于存储过程来根据指定的用户名获由于要使用加密字符串,这里借助于存储过程来根据指定的用户名获得其密码。创建存储过程得其密码。创建存储过程sp_getUserInfo的脚本如下:的脚本如下:1416.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 2配置配置Web.Config文件文件在在Web.Config文件中添加启用文件中添加启用Forms表单验证的语句如下:表单验证的语句如下:由于使用相同的数据库,该实例使
10、用的连接字符串的同上例,在此不做由于使用相同的数据库,该实例使用的连接字符串的同上例,在此不做重复配置。重复配置。1516.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 3设计和实现注册页面设计和实现注册页面(1)在)在SecurityDemo网站中新建名称为网站中新建名称为Register.aspx的的Web页面。页面。(2)设计注册页面)设计注册页面Register页面主要页面主要Label、TextBox、Button和验证控件组成,这些控件和验证控件组成,这些控件的主要属性见下表。的主要属性见下表。1616.2 案例完成步骤16.2.2 16.2.2 使
11、用表单身份验证使用表单身份验证 最终得到的页面设计效果如图所示。最终得到的页面设计效果如图所示。1716.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 1816.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 1916.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 程序运行后,输入用户名和密码(分别为程序运行后,输入用户名和密码(分别为formdemo),如图所示。),如图所示。单击单击“注册注册”按钮,首先由验证控件完成数据输入的合法性验证,再把按钮,首先由验证控件完成数据输入的合法性验证,再把用户
12、名和加密后的密码写入到数据库,注册成功将会显示用户名和加密后的密码写入到数据库,注册成功将会显示“注册成功注册成功”的信息,如图所示。的信息,如图所示。2016.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 在在SQL Server 2005中查看到新注册的用户信息,我们发现该用户的中查看到新注册的用户信息,我们发现该用户的u_Pass和和u_SaltPass都已经被加密,如图所示。都已经被加密,如图所示。2116.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 4设计和实现登录页面设计和实现登录页面(Login2.aspx)(1)
13、在)在SecurityDemo网站中新建名称为网站中新建名称为Login2.aspx的的Web页面。页面。(2)设计登录页面)设计登录页面 Login2.aspx页面的设计与注册页面页面的设计与注册页面Register.aspx页面大同小异,页面大同小异,主要增加了一个主要增加了一个CheckBox用于选择是否保存用于选择是否保存Cookie,页面控件及其详,页面控件及其详细属性在此不再重复。最终得到的页面设计效果如图所示细属性在此不再重复。最终得到的页面设计效果如图所示。2216.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 (3)实现注册功能)实现注册功能
14、本程序对输入本程序对输入的用户和密码进行验的用户和密码进行验证,最终完成的证,最终完成的“登登录录”按钮的事件代码按钮的事件代码如下:如下:2316.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 (3)实现注册功能)实现注册功能 本程序对输入本程序对输入的用户和密码进行验的用户和密码进行验证,最终完成的证,最终完成的“登登录录”按钮的事件代码按钮的事件代码参阅教材。参阅教材。2416.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 5设计和实现测试页面设计和实现测试页面(Test.aspx)(1)在)在SecurityDemo网站中
15、新建名称为网站中新建名称为Test.aspx的的Web页面。页面。(2)设计测试页面)设计测试页面Test.aspx页面使用四个标签用于显示登录用户名和用户身份。并通过一页面使用四个标签用于显示登录用户名和用户身份。并通过一个个“注销注销”按钮返回。最终得到的页面设计效果如图所示。按钮返回。最终得到的页面设计效果如图所示。2516.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证(3)实现注销功能)实现注销功能本程序用于显示已注册的用户名及其身份,并提供注销功能,最终完成本程序用于显示已注册的用户名及其身份,并提供注销功能,最终完成的页面启动时和的页面启动时和“注销
16、注销”按钮的事件代码如下按钮的事件代码如下 2616.2 案例完成步骤16.2.2 16.2.2 使用表单身份验证使用表单身份验证 6运行程序运行程序 使用注册程序进行用户注册后,启动使用注册程序进行用户注册后,启动Login2.aspx程序,输入用户名程序,输入用户名和密码(分别为和密码(分别为formdemo),如图所示。单击),如图所示。单击“登录登录”按钮,首先由按钮,首先由验证控件完成数据输入的合法性验证,再进行用户名和密码验证,登录验证控件完成数据输入的合法性验证,再进行用户名和密码验证,登录成功将会跳转到测试页面(成功将会跳转到测试页面(Test.aspx)并显示登录用户的信息,
17、如图所)并显示登录用户的信息,如图所示。示。2716.2 案例完成步骤16.2.3 16.2.3 发布与测试发布与测试ASP.NETASP.NET程序程序 1发布发布ASP.NET程序程序(1)打开)打开“SecurityDemo”网站,在网站,在“解决方案资源管理器解决方案资源管理器”中,右中,右键单击要发布的网站键单击要发布的网站SecurityDemo,在弹出菜单中选择,在弹出菜单中选择“发布网站发布网站”,如图所示。打开如图所示。打开“发布网站发布网站”对话框。对话框。2816.2 案例完成步骤16.2.3 16.2.3 发布与测试发布与测试ASP.NETASP.NET程序程序 (2)
18、在)在“发布网站发布网站”对话框中,在该对话框中的对话框中,在该对话框中的“目标位置目标位置”文本文本框中输入或通过单击右侧的按钮选择要发布网站的目标位置,这里发布框中输入或通过单击右侧的按钮选择要发布网站的目标位置,这里发布网站的目标位置为网站的目标位置为“e:Security”,如图所示。,如图所示。2916.2 案例完成步骤16.2.3 16.2.3 发布与测试发布与测试ASP.NETASP.NET程序程序 (3)单击)单击“确定确定”按钮,按钮,Microsoft Visual Studion 2005将编译网将编译网站的内容,并将编译的文件输出到指定的文件夹中,在站的内容,并将编译的
19、文件输出到指定的文件夹中,在“输出输出”窗口将窗口将会显示编译的进度信息,如果编译时发生一个错误,会显示编译的进度信息,如果编译时发生一个错误,“输出输出”窗口会报窗口会报告该错误。发布成功后在目标文件夹(告该错误。发布成功后在目标文件夹(E:Security)可以查看到发布)可以查看到发布后的文件,如图所示后的文件,如图所示。3016.2 案例完成步骤16.2.3 16.2.3 发布与测试发布与测试ASP.NETASP.NET程序程序 2测试发布的网站测试发布的网站 网站发布完成后,可以通过网站发布完成后,可以通过Web服务器运行网站来对网站进行测试。服务器运行网站来对网站进行测试。要运行网
20、站有两种方法可以实现,一是创建一个指向目标文件夹的要运行网站有两种方法可以实现,一是创建一个指向目标文件夹的IIS虚拟目录;二是将发布后的目标文件夹设置为虚拟目录;二是将发布后的目标文件夹设置为Web共享。共享。方法一:配置方法一:配置IIS虚拟目录虚拟目录使用使用IIS管理工具创建虚拟目录的主要操作步骤如下。管理工具创建虚拟目录的主要操作步骤如下。(1)打开)打开“控件面板控件面板”中的中的“管理工具管理工具”,双击,双击“Internet信息服务信息服务管理器管理器”,打开,打开“Internet信息服务(信息服务(IIS)管理器)管理器”对话框。对话框。(2)在)在“Internet信息
21、服务(信息服务(IIS)管理器)管理器”中,依次选择中,依次选择“网站网站”“默认网站默认网站”节点,单击鼠标右键,在弹出的菜单中,选择节点,单击鼠标右键,在弹出的菜单中,选择“新建新建”“虚拟目录虚拟目录”命令,如图所示。命令,如图所示。3116.2 案例完成步骤16.2.3 16.2.3 发布与测试发布与测试ASP.NETASP.NET程序程序 3216.2 案例完成步骤16.2.3 16.2.3 发布与测试发布与测试ASP.NETASP.NET程序程序 (3)打下)打下“虚拟目录创建向导虚拟目录创建向导”对话框,单击对话框,单击“下一步下一步”按钮,打按钮,打开开“虚拟目录别名虚拟目录别
22、名”对话框,在对话框,在“别名别名”文本框中输入虚拟目录的别名,文本框中输入虚拟目录的别名,这里虚拟目录别名为这里虚拟目录别名为“Security”,如图所示。然后单击,如图所示。然后单击“下一步下一步”按按钮,打开钮,打开“虚拟内容目录虚拟内容目录”对话框,这里指定虚拟目录站点的路径为对话框,这里指定虚拟目录站点的路径为“E:Security”,如图所示。,如图所示。3316.2 案例完成步骤16.2.3 16.2.3 发布与测试发布与测试ASP.NETASP.NET程序程序 (4)完成虚拟目录路径设置之后,单击)完成虚拟目录路径设置之后,单击“下一步下一步”按钮,打开按钮,打开“访访问权限
23、问权限”对话框,选择相应的权限,如图所示。单击对话框,选择相应的权限,如图所示。单击“下一步下一步”按钮弹按钮弹出出“Internet管理器管理器”对话框,选择对话框,选择“是是”按钮,弹出按钮,弹出“已完成虚拟目已完成虚拟目录创建向导录创建向导”对话框,单击对话框,单击“完成完成”按钮,虚拟目录创建成功。返回按钮,虚拟目录创建成功。返回“Internet信息服务信息服务”对话框。对话框。3416.2 案例完成步骤16.2.3 16.2.3 发布与测试发布与测试ASP.NETASP.NET程序程序 方法二:设置方法二:设置Web共享共享首先选择首先选择Web项目所在的文件夹(如项目所在的文件夹
24、(如E:Security),然后右击文件夹,),然后右击文件夹,在打开的快捷菜单中选择在打开的快捷菜单中选择“共享和安全共享和安全”命令或者选择命令或者选择“属性属性”命令打命令打开开“属性属性”对话框,切换到对话框,切换到“Web共享共享”选项卡,如图所示。选项卡,如图所示。3516.2 案例完成步骤16.2.4 16.2.4 打包与安装网站打包与安装网站 1打包网站打包网站打包就是制作安装程序即将应用程序包装成易于部署的形式,包装好打包就是制作安装程序即将应用程序包装成易于部署的形式,包装好之后的应用程序可以方便地安装到目标服务器上。打包网站的操作步之后的应用程序可以方便地安装到目标服务器
25、上。打包网站的操作步骤如下。骤如下。(1)打开)打开“SecurityDemo”网站。网站。(2)选择)选择“文件文件”“添加添加”“新建项目新建项目”命令。命令。(3)打开)打开“添加新项目添加新项目”对话框,在对话框,在“项目类型项目类型”列表中选择列表中选择“其他其他项目类型项目类型”“安装和部署安装和部署”节点,在右侧的节点,在右侧的“模板模板”列表中选择列表中选择“Web安装项目安装项目”,在,在“名称名称”文本框中输入存放打包网站的文件夹文本框中输入存放打包网站的文件夹名称,在名称,在“位置位置”文本框中输入存放打包网站文件夹的目标地址,设文本框中输入存放打包网站文件夹的目标地址,
26、设置结果如图所示。置结果如图所示。3616.2 案例完成步骤16.2.4 16.2.4 打包与安装网站打包与安装网站 3716.2 案例完成步骤16.2.4 16.2.4 打包与安装网站打包与安装网站 (4)单击)单击“确定确定”按钮,按钮,Web安装项目已经添加到安装项目已经添加到“解决方案资源管解决方案资源管理器理器”中,并且中,并且“文件系统编辑器文件系统编辑器”处于打开状态,如图所示。处于打开状态,如图所示。3816.2 案例完成步骤16.2.4 16.2.4 打包与安装网站打包与安装网站 (5)在)在“文件系统编辑器文件系统编辑器”中右键单击中右键单击“Web应用程序文件夹应用程序文
27、件夹”,在,在弹出的快捷菜单中选择弹出的快捷菜单中选择“添加添加”“项目输出项目输出”命令,如图所示命令,如图所示。3916.2 案例完成步骤16.2.4 16.2.4 打包与安装网站打包与安装网站 (6)在打开的)在打开的“添加项目输出组添加项目输出组”对话框中,各选项保留默认值,如对话框中,各选项保留默认值,如图所示。图所示。(7)单击)单击“确定确定”按钮,即可将按钮,即可将“内容文件内容文件”添加到打包网站中。在添加到打包网站中。在“文件系统编辑器文件系统编辑器”中将会出现内容输出文件中将会出现内容输出文件。(8)选择)选择“生成生成”“生成生成SecuritySetup”命令,生成安
28、装文件,命令,生成安装文件,生成安装项目文件夹中的内容如图所示。生成安装项目文件夹中的内容如图所示。4016.2 案例完成步骤16.2.4 16.2.4 打包与安装网站打包与安装网站 2安装网站安装网站安装该网站的具体操作步骤如下:安装该网站的具体操作步骤如下:(1)打开安装程序生成目录,在)打开安装程序生成目录,在“Debug”文件夹双击文件夹双击“setup.exe”,打开打开“安装向导欢迎安装向导欢迎”对话框。对话框。(2)单击)单击“下一步下一步”按钮弹出按钮弹出“选择安装地址选择安装地址”对话框,设置虚拟目对话框,设置虚拟目录为录为Security,其他各项都使用默认值,如图所示。,
29、其他各项都使用默认值,如图所示。4116.2 案例完成步骤16.2.4 16.2.4 打包与安装网站打包与安装网站 (3)单击)单击“下一步下一步”按钮弹出按钮弹出“确认安装确认安装”对话框,单击对话框,单击“下一步下一步”按钮进行项目安装,项目安装完成后,弹出按钮进行项目安装,项目安装完成后,弹出“安装完成安装完成”对话框。对话框。(4)单击)单击“关闭关闭”按钮,完成项目安装。按钮,完成项目安装。项目安装完成后,在项目安装完成后,在“Internet信息服务信息服务”对话框中就会出现对话框中就会出现“Security”虚拟目录,同时在虚拟目录,同时在IIS的主目录下可以找到的主目录下可以找
30、到“Security”文文件夹,该文件夹下就会有网站运行的基本文件。通过浏览器即可访问件夹,该文件夹下就会有网站运行的基本文件。通过浏览器即可访问该网站的相关页面。该网站的相关页面。4216.3 知识链接16.3.1 SQL16.3.1 SQL注入式攻击注入式攻击 1什么是什么是SQL注入式攻击注入式攻击 所谓所谓SQL注入式攻击,就是攻击者把注入式攻击,就是攻击者把SQL命令插入到命令插入到Web表单的输表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令。在命令。在某些表单中,用户输入的内容直接用来构造(或者影响)动态某些表单中
31、,用户输入的内容直接用来构造(或者影响)动态SQL命命令,或作为存储过程的输入参数,这类表单特别容易受到令,或作为存储过程的输入参数,这类表单特别容易受到SQL注入式注入式攻击。攻击。4316.3 知识链接16.3.1 SQL16.3.1 SQL注入式攻击注入式攻击 2如何有效防范如何有效防范SQL注入式攻击注入式攻击(1)对于动态构造)对于动态构造SQL查询的场合,可以使用下面的方法:查询的场合,可以使用下面的方法:方法一:方法一:替换替换SQL语句中的单引号。语句中的单引号。方法二:方法二:删除用户输入内容中的所有连字符。防止攻击者构造出类如删除用户输入内容中的所有连字符。防止攻击者构造出
32、类如“SELECT*from tb_Users WHERE u_Name=liuzc-AND u_Pass=”之类的查询,因为这类查询的后半部分已经被注释掉,不之类的查询,因为这类查询的后半部分已经被注释掉,不再有效,攻击者只要知道一个合法的用户登录名称,根本不需要知道再有效,攻击者只要知道一个合法的用户登录名称,根本不需要知道用户的密码就可以顺利获得访问权限。用户的密码就可以顺利获得访问权限。方法三:方法三:对于用来执行查询的数据库帐户,限制其权限。用不同的用对于用来执行查询的数据库帐户,限制其权限。用不同的用户帐户执行查询、插入、更新、删除操作。由于隔离了不同帐户可执户帐户执行查询、插入、
33、更新、删除操作。由于隔离了不同帐户可执行的操作,因而也就防止了原本用于执行行的操作,因而也就防止了原本用于执行SELECT命令的地方却被用命令的地方却被用于执行于执行INSERT、UPDATE或或DELETE命令。命令。4416.3 知识链接16.3.1 SQL16.3.1 SQL注入式攻击注入式攻击 (2)用存储过程来执行所有的查询。)用存储过程来执行所有的查询。(3)限制表单或查询字符串输入的长度。)限制表单或查询字符串输入的长度。(4)检查用户输入的合法性,确信输入的内容只包含合法的数据。)检查用户输入的合法性,确信输入的内容只包含合法的数据。(5)将用户登录名称、密码等数据加密保存。)
34、将用户登录名称、密码等数据加密保存。(6)检查提取数据的查询所返回的记录数量。)检查提取数据的查询所返回的记录数量。4516.3 知识链接16.3.2 ASP.NET16.3.2 ASP.NET身份验证身份验证 1Windows 身份验证身份验证 2Forms身份验证身份验证 3Passport 身份验证身份验证 4616.4 拓展提高选择题选择题 1.可以使用自己的代码对用户进行身份验证的形式是可以使用自己的代码对用户进行身份验证的形式是()。A.Windows 身份验证身份验证B.Forms身份验证身份验证C.Passport 身份验证身份验证D.自定义身份验证自定义身份验证2.下列不属于
35、有效防范下列不属于有效防范SQL注入式攻击技术手段的是注入式攻击技术手段的是()。A.使用存储过程来执行所有的查询使用存储过程来执行所有的查询B.输入强壮的密码输入强壮的密码C.限制表单或查询字符串输入的长度限制表单或查询字符串输入的长度D.检查用户输入的合法性检查用户输入的合法性、4716.4 拓展提高操作题操作题 1操作要求操作要求(1)完善)完善Register.aspx程序,实现注册用户名重复的检查。程序,实现注册用户名重复的检查。(2)完善)完善Register.aspx程序,编写独立的对指定字符串进行加密的方法。程序,编写独立的对指定字符串进行加密的方法。(3)完善)完善Register.aspx程序,实现从注册成功后到登录页面的跳转。程序,实现从注册成功后到登录页面的跳转。2操作说明操作说明(1)比较不同的登录方法。)比较不同的登录方法。(2)考虑到安全控制的不同层次。)考虑到安全控制的不同层次。(3)进一步掌握)进一步掌握MD5加密程序的编写。加密程序的编写。、