1、 具有动态口令认证机制的网上投票系统 的设计 摘 要 随着网络技术的 迅速 发展, 传统的投票方式已经不能满足 人们 的需要 。 而网上投票系统除了能够完成传统的功能之外,更具有时效高和范围广的优点,更符合现代社会的需要。 具有动态口令认证机制的网上投票系统 的设计 是采用 ASP和 SQL Server2000技术开发的简易投票系统 ,并在用户登陆过程中设置动态验证码,提高系统的安全性 。它实现 了以下功能 :投票、结果查看、增加 、 删除及搜索投票等 。 本论文首先介绍了网上投票系统 的概念 及 和适用范围。 在系统开发环境中 主要 对 ASP、SQL 和动 态口令认证机制的基本概念 作了
2、详尽的介绍。接着 通过 E-R 图说明数据库的搭建和数据库的设计。 然后 介绍了本系统的总体设计,包括: 系统结构和 总体功能设计。 论文 以功能模块图的形式说明了功能的设计并给出了 部分 核心代码及 主要功能界面图。 关键词 : 网上投票系统; ASP; SQL;动态验证码 The design of the on-line vote system with the dynamic password authentication scheme Abstract With the rapid development of network, the traditional vote method
3、 has already cant satisfied peoples demanded. But in addition to completing traditional function, “the on-line vote system“ has time limited efficacy more high and the scope wide advantage, meet the demand of modern society more. The design of the on-line vote system with the dynamic password authen
4、tication scheme is a simple vote system have developed by ASP and SQL Server2000 technique, and established a dynamic verifiable code in the process of the customer login the system, enhanced systems security. It can be effective implement the function of voting, examining, adding, deleting and sear
5、ching votes. To start with, this thesis introduces the basic concept and the appliance scope of the on-line vote system. After that, the thesis make detailed introduction to the basic concept of the ASP, the SQL and the dynamic password authentication scheme in the part of the development environmen
6、t of the system. Then it elucidates the creation of the database by the E-R diagram and the design of the database. Introduced the total design of this system immediately after, include: the system structure designs and the total function design. With the form of the function diagram, thesis explain
7、ed the design of function, showed core code and the system circulate interface of the main function. Key words: The on-line vote system; ASP; SQL; The dynamic verifiable code第 1 页 1 引言 随着计算机技术的飞速发展,尤其是网络技术的超速发展,带动了信息的广泛交流,人们每天需要大量的信息来充实自己, 传统的投票和调查方式已经不能满足我们的需要 ,针对这种情况,网上投票系统应运而生。 网上投票系统除了能够完成传 统的功能
8、之外,更具有时效高和范围广的优点,更符合现代社会的需要 。 从国际互联网到校园网,企业局域网,各种网上投票系统随处可见,意见调查,用户信息统计,经营情况调查都可以作为投票的内容,网上投票系统凭借其方便快捷等特点,已经成为互联网资源中不可缺少的一部分,并且,随着网络技术的发展,网上投票系统的作用将会越来越大 。 据新闻报道,日本政府正投资 10 亿日元开发电子投票系统用于选举,荷兰、比利时和巴西等国家已经开始在部分地区使用网上投票系统,可见其巨大的发展潜力。 然而,在计算机网络中,任何方便实用的技术都必须建立在信 息安全这块基石上。一项网络技术的安全性,也是决定着想技术成败的关键性的性质。而具有
9、动态验证的网上投票系统既能使信息的保密性得到保证,又能确认投票者身份的有效性与唯一性,这样才能保证统计结果的真实有效。 1.1 网上投票系统的概念 网上投票调系统是一种在网站上提出投票题目,由用户在线投票并对调查投票的统计结果直接显示的调查工具。网站管理方可以通过网上调查并对投票结果自动进行系统分析后得出有用信息,如浏览用户对某产品或服务的看法等,是企业利用网站低成本进行市场调查的重要手段。 1.2 网上 投票 系 统概念的提出 网络的 快速发展和计算机的广泛普及,为解决传统 民意调查 存在的缺点和提出网上 投票 系统概念提供了物质基础。人们针对传统 的民意调查存在的不足,开发了网上投票 系统
10、,大大提高了 调查的 时效性。 1.3 网上 投票 系 统 的适用范围 从技术上来说,网上 投票 是十分简便的,时效性也强。但是目前网上的民意调查似乎还有一定的随意性,没有按照严格的民意调查的程序与方法进行。网上调查与传统民意调查有着很大不同,值得我们从各个角度去认识。我个人认为,至少以下方面是需要关注的 。 1.3.1 什么样的主题适合做网上 投票 网上 投票 对象只能来源于网络的使用 者,而目前这部分使用者具有一定的特殊性,特别是在中国。据 CNNIC 2006 年 9 月公布的调查结果 显示 , 我国互联网继续保持持续、稳定的增长态势。其中网民数、上网计算机数分别达到了 11000第 2
11、 页 万人、 4950 万台,与上年同期相比分别增长了 18.1%和 19.0%。 在网民的特征结构方面,男性、未婚、 30 岁以下、大学本科以下、月收入在 2000 元及以下(含无收入)网民的比例依然在网民各特征数据中占据主要地位,所占比例分别为 58.7%、 57.9%、 82.6%、 70.8%、 70.9%,其中未婚、 30 岁以上网民的比例与上年同期 相比都有所上升,但男性网民比例、大学本科以下、月收入在 2000 元及以下(含无收入)网民所占比例与上年同期相比有所下降;在职业方面,学生所占比例超过了总网民的三分之一,达到了 35.1%,其次是企业单位工作人员,占总数的 29.6%,
12、排在第三位的是学校教师及行政人员,所占比例为 7.3%,国家机关、党群组织工作人员所占比例为 6.6%,事业单位工作人员所占比例为 6.5%,其他职业的网民所占比例都在 5.0%以下。 因此, 如果 把一些 大多数网民日常工作生活未 涉及 的调查内容作为网络投票的主题, 结果就会产生偏差。找到适合于网络 调查的主题,是调查结果合理、有效的前提。 1.3.2 网上 投票 样本的合理性 传统问卷调查,调查方可以根据需要抽取样本,以保证其合理性。但网上 投票 调查基本上取决于上网用户的主观意愿。而他的心绪、性格、当时环境等等因素,会对他是否主动参加调查起作用,也就会在一定程度上影响样本的合理性。 1
13、.3.3 网上 投票的程序与方法 由于网络的特点,网上 投票 调查与传统的调查有着很大的区别。因此,研究出一套适合网络特点的调查程序与方法是必要的 。本网上投票系统的调查程序与方法将在之后的章节详细阐述。 2 系统体系开发环境 2.1 系统的硬件环境 本系统在开发过程中以 SQL 为基础, ASP 编程。计算机和服务器的最低要求: ( 1) 处理器: PentiumIII 600MHz 或者更高 ; ( 2) 内存( RAM):至少 64MB,建议 128MB 或更高 ; ( 3) 硬盘空间:系统驱动上需求 900MB 的可用空间,安装驱动上要求 3.3GB的可用空间,可选的 MSDN 库文档
14、另需 1.9GB 的可用空间 ; ( 4) 显示器:需要设置成 1024x768 模式或者更高分辨率 ; ( 5) 其他: CD-ROM 或者 DVD-ROM 驱动器以及 Microsoft 鼠标或者兼容的指针设备 。 第 3 页 2.2 技术上配合 个人计算机的出现加速了企业信息化进程,网络开发的新模式也日趋成熟,发展到现在,网络的开发模式已从工作站服务器模式、 Client/Server 模式发展到以浏览器 /web 服务器体系结构模型的 Browser/Server 模式。浏览器 /web 服务器最基本的形式是使用 web 服务。浏览器 /web 服务器的出现实现了一个三层应用架构,它将
15、客户机 /服务器模型以及那些基于主机的处理模型的最好特性聚集在一起了,这一体系结构的目标是容易配置、信息的集中管理和简单的资源管理在这个开发思想中,服务器的负责向用户提供信息 和要求的数据,另外通过客户浏览器软件,服务器是呈现给用户的图形化用户界面显示由服务器发送的住处服务器控制住处的布局和内容,这使信息的控制和管理非常可靠,计算机网络从体系结构到实用技术已逐步走向系统化、工程化、科学化。 在进行 “网上投票系统 “的开发时,用到了许多计算机方面的相关技术,其中也用到了许多新的开发技术和方法,这些也是完成系统开发的关键性技术,最主要的是:软件工程、 ASP 技术、三层应用系统框架结构、 SQL
16、 数据库技术等。 2.3 ASP 简介 Microsoft Active Server Pages 即 我们所称的 ASP,其实是一套微软开发的服务器端脚本环境, ASP 内含于 IIS 3.0 和 4.0 之中 ,通过 ASP 我们可以结合 HTML 网页、 ASP 指令和 ActiveX 元件建立动态、交互且高效的 WEB 服务器应用程序。有了 ASP 你就不必担心客户的浏览器是否能运行你所编写的代码,因为所有的程序都将在服务器端执行,包括所有嵌在普通 HTML 中的脚本程序。当程序执行完毕后,服务器仅将执行的结果返回给客户浏览器,这样也就减轻了客户端浏览器的负担,大大提高了交互的速度。以
17、下罗列了 Active Server Pages 所独具的 一些特点: ( 1) 使用 VBScript、 JScript 等简单易懂的脚本语言,结合 HTML 代码,即可快速地完成网站的应用程序。 ( 2) 无须 compile 编译,容易编写,可在服务器端直接执行。 ( 3) 使用普通的文本编辑器,如 Windows 的记事本,即可进行编辑设计。 ( 4) 与浏览器无关 (Browser Independence),用户端只要使用可执行 HTML码的浏览器,即可浏览 Active Server Pages 所设计的网页内容。 Active Server Pages 所使用的脚本语言 (VB
18、Script、 Jscript)均在 WEB 服务器端执行,用户端的浏览器不需要能够执行这些脚本语言。 ( 5) Active Server Pages 能与任何 ActiveX scripting 语言相容。除了可使用 VBScript 或 JScript 语言来设计外,还通过 plug-in 的方式,使用由第三方所提供的其他脚本语言,譬如 REXX、 Perl、 Tcl 等。脚本引擎是处理脚本程第 4 页 序的 COM(Component Object Model)物件。 ( 6) Active Server Pages 的源程序,不会被传到客户浏览器,因而可以避免所写 的源程序被他人剽窃
19、,也提高了程序的安全性。 ( 7) 可使用服务器端的脚本来产生客户端的脚本。 ( 8) 物件导向( Object-oriented)。 ( 9) ActiveX Server Components(ActiveX 服务器元件 )具有无限可扩充性。可以使用 Visual Basic、 Java、 Visual C+、 COBOL 等编程语言来编写你所需要的 ActiveX Server Component。 运行 ASP 所需的环境: Microsoft Internet Information Server version 3.0/4.0 on Windows NT Server Micros
20、oft Peer Web Services Version 3.0 on Windows NT Workstation Microsoft Personal Web Server on Windows 95/98 ASP的处理过程。当一个用户浏览器 (下图所示: Web Client)从 Web服务器 (下图所示: Web Server)要求一个 ASP 网页时, Web 服务器会将这个 ASP 文件发送给 Web 服务器的 ASP 引擎 (下图 所示: ASP Engine), ASP 引擎则将该 ASP 网页中所有的服务器端脚本 (下图所示: 之间的代码 )转换成 HTML 代码,然后将所
21、有 HTML 代码发送给用户浏览器。见下图所示: 图 2-1 ASP 处理过程 2.4 SQL 简介 SQL 全称是 “结构化查询语言 (Structured Query Language)”,最早的是 IBM 的第 5 页 圣约瑟研究实验室为其关系数据库管理系统 SYSTEM R 开发的一种查询语言,它的前身是 SQUARE 语言。 SQL 语言结构简洁,功能强大,简单易学,所以自从 IBM 公司 1981 年推出以 来, SQL 语言,得到了广泛的应用。如今无论是像Oracle,Sybase,Informix,SQL server 这些大型的数据库管理系统,还是像 Visual Foxpo
22、ro,PowerBuilder 这些微机上常用的数据库开发系统,都支持 SQL 语言作为查询语言。 Structured Query Language 包含 4 个部分: 数据查询语言 DQL-Data Query Language SELECT ; 数 据 操 纵 语 言 DQL-Data Manipulation Language INSERT,UPDATE,DELETE ; 数据定义语言 DQL-Data Definition Language CREATE,ALTER,DROP; 数据控制语言 DQL-Data Control Language COMMIT WORK,ROLLBACK
23、 WORK。 SQL 的优点 : SQL 广泛地被采用正说明了它的优点。它使全部用户,包括应用程序员、 DBA 管理员和终端用户受益非浅。 SQL 是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。 SQL 允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有 SQL 语句接受集 合作为输入,返回集合作为输出。 SQL 的集合特性允许一条 SQL 语句的结果作为另一条 SQL 语句的输入。 SQL 不要求用户指定对数据的存放方法。这种特性使用户更易集中精力于要得到的结果。所有 SQL语句使用查询优化器,它是 RDBMS 的一部分,由它决定对指定数据存取的最
24、快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户从不需要知道表是否有索引,表有什么类型的索引。 SQL 可用于所有用户的 DB 活动模型,包括系统管理员、数据库管理员、应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的 SQL 命令只需很 少时间就能学会,最高级的命令在几天内便可掌握。 SQL 为许多任务提供了命令,包括: ( 1) 查询数据 ; ( 2) 在表中插入、修改和删除记录 ; ( 3) 建立、修改和删除数据对象 ; ( 4) 控制对数据和数据对象的存取 ; ( 5) 保证数据库一致性和完整性 。 以前的数据库管理系统为上述各类操作提供单独的语言,而 SQL
25、将全部任务统一在一种语言中。 由于所有主要的关系数据库管理系统都支持 SQL 语言,用户可将使用 SQL的技能从一个 RDBMS 转到另一个。所有用 SQL 编写的程序都是可以移植的。 第 6 页 2.5 动态口令认证技术 动态口令技术是对 传统的静态口令技术的改进,它采用双因子认证的原理,即用户既要拥有一些东西( something you have),如系统颁发的 Token(令牌),又要知道一些东西( something you know),如启用 Token 的口令。当用户要网上投票登录系统时,首先要输入启用 Token 的口令,其次还要将 Token 上所显示的数字作为系统的口令输入
26、。 Token 上的数字是不断变化的,而且与认证服务器同步,因此用户登录到系统的口令也是不断地变化的(即所谓的“一次一密”)。 双因子认证比基于口令的 认证 方法增加了一个认证要素,攻击者仅仅获取了用户口令或者仅仅拿到了用户的令牌访问设备,都无法通过系统的认证。而且令牌访问设备上所显示的数字式不断地变化,这使得攻击变得非常困难。因此,这种方法比基于口令的认证方法具有更好的安全性,在一定程度不同上解决了基于静态口令的认证方法所面临的威胁。 动态口令认证技术具体的实现即是验证码。 所谓验证码, 是将一串随机产生的数字或符号,生成一幅图片, 图片里加上一些干扰象素(防止 OCR),由用户肉眼识别其中
27、的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。 验证码可 防 止大规模匿名 操作 的发生, 如某些 用户利用 软件 自动注册、登录、 投票等不公正行为。而 加上随机的验证码之后 ,软件不可能计算出一样的验证码 ,因此就无法 投票 了 。 2.5.1 验证码起源 因为攻击者会使用有害程序注册大量的 Web 服务帐户(如 Passport)。攻击者可以使用这些帐户为其他的用户制造麻烦,如发送垃圾邮件或通过同时反复登录多个帐户来延缓服务的速度。在大多数情况下,自动注册程序不能识别此图片中的字符。简单的说呢,就是防止攻击者编写程序,自动注册,重复登录暴力破解密码。验证码技术应运而生。
28、 2.5.2 验证码实现 流程 服务器端随机生成验证码字符串,保存在内存中,并写入图片,发送给浏览器端显示,浏览器端输入验证码图片上字符,然后提交服务器端,提交的字符和服务器端保存的该字符比较是否一致。一致就继续,否则返回提示。攻击者编写的 robot 程序,很难识别验证码字符,顺利的完成自动注册,登录。而用户可以识别填写,所以这就实现了阻挡攻击的作用。而图片的字符识别,就是看图片上的干扰强度了。就实际的效果来说,验证码只是增加攻击者的难度,而不可能完全的防止。 第 7 页 2.5.3 网上投票系统中的 验证码的作用 因为 WEB 站有时会碰到客户机恶意攻 击 , 其中一种很常见的攻击手段就是
29、身份欺骗它通过在客户端脚本写入一些代码 , 然后利用其客户机在 网站 反复登陆 ,或者攻击者创建一个 HTML 窗体 , 其窗体如果包含了注册窗体或 投票 窗体等相同的字段 ,然后利用 “ http-post” 传输数据到服务器 ,服务器会执行相应的创建帐户 , 提交垃圾数据等操作 , 如果服务器本身不能有效验证并拒绝此非法操作 , 它会很严重耗费其系统资源 , 降低网站性能甚至使程序崩溃 。 而现在流行的判断访问 WEB 程序是合法用户还是恶意操作的方式 , 就是采用动态口令 技术 。本网上投票系统 采用 的 方法是为 用 户提供一个包含随即字 符串的图片,用户必须读取这些字符串 , 然后随
30、登陆窗体或者 投票 窗体等用户创建的窗体一起提交 。 因为人的话 , 可以很容易读出图片中的数字 , 但如果是一段客户端攻击代码 , 通过一般手段是很难识别验证码的 。 这样可以确保当前访问是来自一个人而非机器 。 3 数据库的搭建 3.1 E-R 图 E-R 如下: 第 8 页 图 3-1 E-R 图 数据库连接程序: 3.2 数据库 的 设计 3.2.1 用户信息 在用户注册时,用于存储“用户帐号”“用户密码”“用户真实姓名”“用户电话”“用户电子邮件”“用户地址”“用户备注”等相关信息。 用户 用户 ID 用户 密码 姓名 投票 主题 投票目的 投票内容 显示结果 管理员 投票 增加 删除 更新 管理员 ID 管理员密码 搜索 投票 选 项 1 选项 2