第六章 关键技术实现
本网站中采用的一些关键技术,比如:用户登录中采用了 MD5 加密、验证码技术和数据挖掘在网站中的应用,在本章中进行详细介绍。
6.1 登录和验证码
6.1.1 密码验证
密码验证是目前最广泛的身份验证方法,虽然其安全性比其他方法差,但简单易行,如果使用恰当,就可以提供一定程度的安全保证。防止密码泄露是这一方法中的关键问题。
Web 安全处理的第一步便是验证,即对于请求信息的用户验证其身份。用户使用证件来表明其身份,证件的种类各种各样,最常用的就是用户名和密码。在验证用户身份时,如果系统不能根据用户名和密码确定其身份,则身份验证失败,用户将被拒绝访问网页,如果验证成功,则用户将被允许进入系统,并被赋予一个权限[27].
登录部分首先输入用户名和密码,然后再选择用户类型,然后点击“确定”,此时后台在数据库中进行查找匹配,当验证成功时,若是用户身份为学生,则将 classid 的 session 值赋为“xs”,并跳转到相应的页面;若用户身份是教师,则将 classid 的 session 赋为“ls”,并跳转到相应的页面;若用户身份为管理员,则将 classid 的 session 值赋为“gly”,并跳转到相应的页面;若用户身份为超级管理员,则将 classid 的 session 值赋为“admin”,并跳转到相应的页面。当验证失败时,给出错误的提示。当三次输入均错误时,将给出错误提示,并跳转到相应的页面。本设计是采用 ASP.NET 内置对象中的 session 对象来完成用户信息的保存以及各页面间的传值[27].
网站登录验证流程如图 6.1 所示。登录界面如图 6.2 所示。
课题采用密码加密算法是循环MD5变换算法,就是对一个密码进行多次的MD5运算。自定义一个函数,它接受data和times两个形参,第一个形参是要加密的密码,第二个形参是重复加密的次数。
在。NET环境下对密码进行32位MD5编码,最简单的实现方法:
System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(“要编码的字符串”, “MD5”))[6].在决定是否使用加密方式保存密码以前,我们还需要考虑一些问题,因为,MD5 是单向加密算法,加密以后的信息不可以解密,所以,如果用户丢失密码,任何人都很难找到用户原来的密码。这时候网站也就相应的失去一个很重要的功能,那就是用户提供其它信息来取得忘记的密码的功能,这不能不说是 MD5 加密的一个缺陷。
6.1.2 验证码设计
所谓的验证码,就是含有干扰信息的一幅由随机产生的数字和符号的图片,用户识别图片中的数字和符号信息,输入表单提交网站验证,验证成功后才能使用某些功能。验证码的作用是有效防止注册用户用特定程序的破解方式进行,不断登录尝试来破解密码。由于现在破解技术的日益高明,简单图片很容易被识别,所以我们需要对图片进行一下“加密处理”.
本课题对验证码的设计思想是用图片框输出验证码,再利用画图函数将验证码描绘得奇怪一些,再随机添加一些杂乱的背景,只有人才能够识别,而暴力破解软件识别比较困难。
加密处理算法设计:在这里我们运用画线和画点函数来处理图片,在图片框上随机选两个点画噪音直线,同时用随机函数确定它的颜色;再随机画一些噪音点,同样用随机函数确定它的颜色。在这里我们还用随机取字体样式和背景色,背景和字体颜色的差别大。加密处理算法是验证码设计的重点。
实现验证码主要通过在页面的加载事件中调用自定义方法CreatecheckCodeImage,将四位验证码转变为带干扰背景的图片显示在页面上。由于CreatecheckCodeImage方法需要传入一个参数,该参数表示验证码,所以还需要调用GenerateCheckCode方法获取四位的数字。自定义GenerateCheckCode方法用来生成一个四位数,在该方法中主要通过使用Random对象来生成随机数,对该数进行取余并转换为字符型,还要将该数保存到Cookies中以方便比较用户输入的验证码,最后将四位数返回。创建。ashx文件将随机生成的数字字符串绘制到图片上[28].算法流程图见图6.3,网站中的实际界面见图6.2.
6.2 数据挖掘在网站中的应用
在实践中,实验室计算机经常发生故障,管理人员需要人工检测每台计算机,费时费力。
SQL Server 数据挖掘技术是一种先进的、极具价值的数据分析工具,为实验室计算机的故障检测提供了有价值的参考,方便了管理人员查找故障计算机,实现了实验室的智能化管理,提高了工作的效率。
6.2.1 故障检测的设计
我校计算中心实验室管理系统采用 B/S 与 C/S 相结合的模式。主要功能有:学生上机管理、上机课程管理、计算机维护管理等功能。系统实现了实验室的无人值守,并对课程上机和自由上机全方位的管理,学生可以登录和使用实验室的开放的任何一台计算机,并且可以随时注销退出。在实验室管理系统 SQLServer 数据库中存储了学生上机的历史记录(包括机器号、本次上机时长、上机开始时间和结束时间等)和教师维修故障计算机的维修记录(包括机器号、报修时间、维修时间和故障原因等),这些信息为故障检测提供了原始数据。
6.2.2 建立挖掘模型
建立数据挖掘模型的第一步通常是数据收集。从实验室管理系统数据库中取得近期的上机历史记录和近期的故障计算机维修记录。选择其中与计算机的机器状态(正常或故障)相关的属性:机器号、本次上机时长、上机开始时间和结束时间、报修时间、维修时间和故障原因等。统计出一定周期内(一个月、两周或 10 天)实验室所有计算机的机器状态、上机总时长、上机次数和频繁换机次数等。将统计信息存储在数据库的一个新表中,用于创建模型、训练模型和预测评价模型。统计周期的选择需要根据创建的挖掘模型的准确性而定,找出最准确模型对应的统计周期,这个过程是一个迭代的过程。频繁换机是指因为计算机的一些小故障(鼠标不灵敏、速度慢、噪音大等故障原因),学生会在短时间内(大约 10 分钟内)更换了一台计算机上机。
使用 BI Dev Studio 平台创建数据挖掘模型的主要过程是:设置数据源、使用数据源视图、创建和编辑模型。
模型的属性包括:ID、机器号、上机次数、上机总时长、频繁换机次数、故障类型和机器状态。预测属性是:机器状态。挖掘算法选择 Microsoft 决策树算法。创建模型的 DMX 代码如下[11-12] [29-30]:
CREATE MINING MODEL [Mach Status]( [ID]LONGKEY,[机器号]TEXTDISCRETE,[上机总时长]LONGCONTINUOUS,[上机次数] LONGCONTINUOUS,[频繁换机次数]LONGCONTINUOUS,[故障类型]TEXTDISCRETE,[机器状态]TEXTDISCRETE PREDICT) USING Microsoft_Decision_Trees.
6.2.3 训练模型
使用BI Dev Studio平台,训练模型的过程称为“处理”,进行“生成”和“部署”操作后就可以浏览挖掘模型,如下图6.4:
由模型可见,从根节点到叶节点的每一条路径都形成一条关于数据的规则,每一条规则也对应着一种类型的机器故障:
第一类型故障:上机总时长小于 1032 分钟,故障概率是 40.38%,这种故障是所以故障中出现概率最高的。这种类型故障可能是严重的计算机故障(内存、显卡、网络连接等)造成了计算机的无法登录和使用,上机总时长就会比较少。
第二类型故障:上机总时长大于等于 1032 分钟并且频繁换机次数大于等于 12 次,第二层故障概率是 5.67%,第三层故障概率是 19.41%.这种类型故障可能是一般性的故障造成(鼠标不灵敏、速度慢、噪音大等)。
第三类型故障:上机总时长大于等于 1032 分钟并且频繁换机次数小于 12 次,第二层故障概率是 5.67%,第三层故障概率是 3.6%,这种类型故障出现概率最小。这种情况可能是数据源“噪声”和无效数据造成的,可以忽略这种故障。
影响机器状态的关键属性是上机总时长和频繁换机次数。这也与实验室管理中的实际经验相吻合。模型的依赖关系网络,如图 6.5.向下调节图中左边指针可查看最强链接,可见对机器状态影响最大的属性是上机总时长,其次是频繁换机次数。反复选择相关属性进行创建和训练挖掘模型,找出最准确的模型,这个过程是一个迭代的过程。我们也可以先建立一个贝叶斯算法模型,找出与机器状态有较强关联的属性,然后再建立决策树算法模型。
6.2.4 使用挖掘模型进行预测
最后是使用挖掘模型对输入数据(输入表)进行预测。BI Dev Studio 平台中“挖掘模型预测”窗格允许构建和编辑预测查询,查看预测结果并将结果保存到一个表中。图 6.6 是在BI Dev Studio 平台中使用查询生成器创建的挖掘模型预测结果[30].
在查询生成器中显示了机器号、正常状态的概率和实际机器状态。其中,正常状态的概率是通过预测函数 PredictProbability(机器状态)来实现,并做了升序排列;实际机器状态是对预测结果的对比。根据正常状态的概率高低可以列出是否是故障计算机以及故障的种类。
由对比看出,实际有故障的机器(图 6.5 中灰色的记录)预测为正常状态的概率都比较低,而且都是第一类型故障,所以预测结果是准确的。经大量的实际测试,使用数据挖掘模型进行预测取得令人满意的效果。
6.3 本章小结
本章根据前面相关技术研究,结合网站开发时遇到的困难及解决办法,介绍了网站开发过程中的一些关键技术,主要对安全登录中密码加密、图形化的验证码和数据挖掘技术在网站中的应用进行了研究和探讨。