(论文)
译 文
题目 基于C语言的MIS程序库设计
学生姓名 黄小凯 学号 2011112139 专业 物联网 班级 20111121 指导教师 张莉莉 评阅教师
毕业设计
完成日期
2014年
12月 20日
基于C语言的MIS程序库设计
BoQu, Zhaozhi Wu
摘要:本文介绍了基于C语言的MIS程序库,在设计和实施过程中的一些技术细节。包括网页编程功能,安全登录功能和实用功能,所有的功能都集成到一个库。该程序库在带有GNU工具链的Linux平台上,用C语言进行编程,并举了一个例子来展示数据库的使用,以及数据库的影响。结果证明,C语言是合适的编程语言。用它来开发基于MIS的网络是安全、可靠和稳定的。
关键词:网络编程库;网页制作;MIS;安全登录; CGI
I. 绪论
随着计算机信息技术的不断发展,信息管理系统已被普遍使用在生活中各个方面。 MIS的基本结构是C/S(客户机/服务器)模式。起初,一些专门的客户端通过与服务器通信,被开发用来执行特定的任务。由于计算机网络和万维网的迅速发展,越来越多的MIS采取网络,作为他们的通信系统和被客户广泛使用的标准浏览器。这就是公认的B/S(浏览器/服务器)模式[1]。
为了满足基于MIS网络发展的要求,一些解释Web的创作语言,如ASP,PHP,JSP等,应运而生。它们共同的特点是解释,例如,ASP和PHP被翻译成专用的网路服务商,而JSP则是被编辑成在Java虚拟机(JVM)上运行的字节编码。虽然效率得到了提升,但在使用它们的过程中,仍然存在许多缺陷。
●无论是在理论或实践上,通过翻译语言的处理速度明显比编译的要慢。虽然服务器程序由Web服务器直接翻译,毕竟运行指令的是源代码,而不是二进制对象的代码。那是不言而喻的。
●为翻译语言运行的代码必须是源代码,而编译语言则是二进制目标代码。这意味用翻译语言设计的MIS程序,存着潜在的危险。例如,关键密码、安全保护、和敏感数据等,容易被一些心怀不轨的使用者看见,因为这些指示全是源代码。
●通过使用翻译语言,很难形成对商业化软件的保护,也难形成对软件知识产权的自我保护。众所周知,C语言是一种强大的编译系统语言[4]。几乎所有的操作系统、DBMS和大多数的系统软件,都是用C语言设计的。通过C语言设计的应用软件,有着
大量的成功案例。这证明C语言对于开发像MIS这样的应用系统,也是一种合适而且强大的程序语言。
事实上,通过精心选择常用功能,以及编程使他们形成一个库,用C语言设计一个MIS的有效性也能得到显著提高。本文提到的Web编程库是一个很好的例子,该库的优点如下。
● 网页编程功能。设计一个基于MIS的网页,网页编程是一项基本的要求。因此这类功能将无疑使程序员设计起来更为方便。这部分是库的主要组成部分,它包括设置页面风格,显示页面标题,显示页头,显示页尾等。
● 安全登录功能。对于现今的MIS系统,登录系统是必不可少的部分,而且系统的安全性必须得到保证。该功能组将提供一些有用的功能,例如CAPTCHA功能,登录功能,cookie处理功能,邮件功能,密码修改功能,和密码获取功能等,从而简化了安全登录系统的设计。
● 实用功能。能够提供一些常用的工具,如计数器、迷你日历、加密和编码功能等。这将给程序员在开发中带来一些帮助。
● C语言中的所有设计。通过使用C语言作为开发语言,在运行MIS的时候,只需要二进制对象代码即可。这无疑增加了安全性、可靠性、可扩展性和运行效率。
本文介绍了基于C语言的MIS程序库,在设计和实施过程中的一些技术细节。包括网页编程功能,安全登录功能和实用功能,并提供了一个详细的演示,来展现库的使用和效果。
II. 网页创作功能
在Web服务器和CGI程序之间的核心业务,是通过标准输入和输出对数据进行翻译。通过CGI程序形成一个网页,发送网页内容到服务器的标准输出是一个必要的工作。由于这个页面实际上是一个HTML文档,标准的格式化输出功能printf()就可以完成这个任务。
根据CGL说明[5]中,通过CGL形成的页面,必须由两部分组成,页头和主体,其中页头用于发送属性信息,而主体则是通过服务器提供给客户端实体。这两个部分通过一个空行分开。
A.形成CGI页头
此功能的目的是形成一个CGI报头页,一些必要的信息也包含其中。图1显示了它的键码。
图1.形成CGL页的页眉键码
图1中,“Status 200”是标题的第一行,它代表着整个页面是一个正确的页面。“Set cookie”这一行只是需要时候的一种选择。需要注意的是,ck_encode()是用来使cookie设密,从而cookie的内容才不会以纯文本的形式被存储。此功能调用加密和
编码功能,这在文章的后面会作进一步描述。disp_style()功能被用于设置CSS样式,这也可以被定义成一个CSS文件。
B.生成顶部设置
顶部设置是MIS页面的主要部分,一般包括MIS标识和一些附加信息,例如当前日期和计数器等,如图2所示。
图2.由web_disphead()产生的页前设置
在图中左边的大部分是MIS图标,而右侧部分则包括当前日期和计数器。 C.生成脚本设置
脚本设置是MIS页第二主要部分,通常包括一些相关的超链接、版本和版权信息等。图3显示一个真实案例,左边图标链接为作者的主页,右面图标为邮件地址。
图3.由web_dispfoot()生成的页面的页脚设置
D.形成退出页面
当用户在MIS上的工作完成后,选中“退出”从而退出系统。两个重要操作必须完成,首先是删除cookies的内容,然后重新验证登录页面。图4给出了它的键码。
图4.键码从MIS内部退出
如图4所示,要删除相应的cookies,最简单的方法是由“空”值重置它们。通过“状态301”和“位置:...”重新定向来实现。
III. 安全登录功能
出于安全的目的,只有授权用户才能访问专门的MIS。这样做的机理是通过登录系统实现的。它一般由三部分组成,一个登录表单页面,一个验证码[3,6]图像,和相应的cookie机制。本文作者用C语言为网页设计了一个基于MIS的安全登录系统,由于文章篇幅限制,关于邮件功能和cookie程序功能将在其他文章中进行详细描述,这里就不再作详细的论述。
除了这些,其它一些常用的功能是需要进行安全登录,主要包括邮件代理配置,修改密码,邮箱配置,和密码取回等。
A.邮件代理配置
传送电子邮件,SMTP服务器是必需的。一般情况下,有两种方法来实现一个SMTP服务器,由在同一主机的MIS运行这样的服务器,或者通过调用一个邮件代理。后者是在不同种类的MIS上,普遍使用的方式。为了调用一个邮件代理,四个基本因素是必需
的,即这个代理的用户名和密码,该帐户的邮箱名和该机构的域名。图5显示了使用这四个因素来安装邮件代理。当然,这个功能应该只用于MIS的管理。
图5.配置的邮件代理表
如图5所示,web_mailagency()功能接受四个因素,然后将它们存储在服务器中。为了保护信息不被窃取,信息是加密的RC4算法,然后用Base64算法进行编码,方便存储。每当需要发送一个消息,邮件代理信息被读出,然后被编码成原来的状态。
B.修改密码
机能的目的是提供一个页面的形式,便于用户修改密码。显然需要三种输入形式控制,其中一个用于原稿,一个用于登录密码,一个用于重复。它的表单页面不是一个困难的任务,但过程口令是一个重要的问题。
有些系统存储的密码是明文,它与来自用户的输入数据进行比较。虽然这是最简单的验证密码的方式,但同时也是一种危险的方式,因为明文密码被储存后,容易被不法分子看见。
C.配置邮箱
配置邮箱也是一种常用的机能,例如,修改用户密码、找回密码、通过管理员发布信息等。web_mailbox()被用来完成配置。如果由用户提供的密码是正确的,它通过使用页形式接受用户的邮箱和存储邮箱。
D.密码找回功能
有两个因素影响着密码取回,即用户名和该用户的邮箱。它的表单页面仅仅由对输入用户名的一种控制形式组成。该用户的邮箱必须由用户预先设定。图6显示了通过这项功能集成的页面形式。
图6.找回密码表
登录的形式显然是相似的,除非在此之前没有密码要求。事实上这与登录网页的形式,有着相同的功能。通过用户名,用户能够获得相应的邮箱,并随机生成一个新的密码。它是由同样的机能登录,该用户的相应信箱可以是随机生成的新密码。新密码以明文的形式被发送到用户的邮箱,同时被加密后存储。通过这种形式处理的目的,是为了避免不法分子获得大量的邮箱。
IV. 公用程序功能
在设计基于C语言的MIS编程库,也需要其他一些常用功能。例如,访问计数器,迷你日历,RC4加密和Base64编码和解码等。
A.访问计数器
有两种类型的访问计数器,分别是基于字符的和基于图像的。后者是被选择用于库的计算功能。为了简化CGI文件的结构,该数字点阵用于形成计数器图像和点阵信息,并且直接编码到源代码。位图[7]被选择作为计数器图象格式。
值得注意的是,访问计数器不能够被刷新,也就是说,只有当一个新的会话发生时,计数才会增加。这可以通过使用cookie来实现。
B.迷你日历
有不同形式的迷你日历,在这里作为一个简单的补充。迷你日历实施对库的影响如图2所示。为了展示基于时间系统的数据是在客户端而不是服务器,日历的内容应在客户端主机上创建,Java语言被用于此目的。
C.加密/解密,编码/解码功能
众所周知,Cookie是基于网络系统的有效机制。由于Cookie被存储在用户的客户端主机,然而,它们的内容也可以很容易地由用户得到,这显然是不利的机密资讯。为了解决这个问题,一个普遍使用的方法是在存储为cookie时进行信息加密[2]。当然,加密的信息应能被解密还原。 RC4加密是这样的算法。在本文所描述的数据库中,RC4由crypt_rc4()加密,这是一个双向实施的功能,也就是说,它不仅仅是一种加密机能,也能够进行自我解密。
加密信息的长度跟原来RC4加密的内容是一样的,加密的字符包含任一个字符,其中的ASCII码可以是从0至255。这意味着,对于一个标准的字符串,所加密内容可能不是一个“标准”的文字串,O可能在其中。解决问题的实际方法是使用Base64编码,它可以把任何字符串解码成仅有的阿尔法字符、数字以及加和除法。
V. 一个EMO示例
为了显示本文提到的Web程序库的使用情况和效果,我们用C语言设计了一个详细的案例。这个案例是一个在大学和高校里用于信息管理的教学课程。图7显示出信箱的页面配置为MIS,通过直接调用功能网页实现机能。
图7.Web页面邮箱配置
该库需要四个回调函数,他们的功能是获取用户密码、输入用户密码、得到用户邮箱,并进入用户邮箱。这四个回调函数被称作功能指南参数,通过调用其他相关的库函数,例如web_userlogin(),web_userpass(),web_mailbox()等,将存储在库内部机能。
由于菜单栏可以通过不同的CGI程序进行变换,菜单栏功能将不会被设计成一个普通的库函数,而是一个使用者函数。为了调节这些数据,菜单栏将不直接由库函数解码。对于那些将使用菜单栏的库函数,“IFRAME”机制将在形成页面中使用。例如,图7中所示的菜单栏被图8中的关键代码给执行。
图8.用于调用的“iframe”键码
VI. 结论
实践证明,用C语言开发MIS,是一个合理的机制,来实现安全、可靠、稳定的系统。由于工作的需要,一些基于Web的MIS开发,已经被本文作者以C语言的形式用在Linux平台上,比如校园网计费系统,安全审计网关系统,本科教学评估系统等。与普遍的比较,解释网页创作语言的应用程序,例如ASP,PHP,JSP等,用C语言设计MIS有其特殊的优点。因此,从加强研究与实践应用角度考虑,具有重要意义。
本文描述的Web编程库是一个很好的例子,基于MIS来实现一个网页。通过使用库,用C语言发展MIS将会更方便,高效。由于文章长度的限制,一些技术详情被省略。由于这个库不依靠特定的软件或硬件,它也可以被使用在基于Web的嵌入式应用系统中。
本文译自:Web programming library design in C for MIS Bo Qu; Zhaozhi WuSoftware Engineering and
Service Science (ICSESS), 2012 IEEE 3rd International Conference on Digital Object Identifier:
10.1109/ICSESS.2012.6269571 Publication Year: 2012 , Page(s): 733 - 736 IEEE Conference Publications.
因篇幅问题不能全部显示,请点此查看更多更全内容