校园网投票安全隐患及解决措施探讨
2011-07-18卢雪栋
崔 勇,卢雪栋
(浙江师范大学教师教育学院,浙江金华321004)
0 引 言
随着Internet的迅速发展,接入Internet的站点越来越多,这为我们在网上对一些问题的调查和评选奠定了基础。目前,网络投票已经被广泛地使用,它不仅给组织者节省了大量的人力、物力和财力,也使得网络投票变得方便、快捷,大大降低了成本。尽管网络投票有着无可厚非的优势,但是也暴露出两个主要问题,一个是用户匿名投票,另一个是用户可以重复投票[1]。面对这些问题,国内有些研究者提出一些解决措施,其中利用session和cookies跟踪用户投票是主流的解决方法。但是cookies和session都有其缺陷,比如两者都有一定的生命周期、用户可以手动删除电脑中的cookies等[2]。近几年,大学招生越来越多,为了便于管理,很多人为的事情都转化为管理系统的形式。其中,投票也由原来的纸质形式转化为网络投票形式。基于校园网的网络投票与一般的网络投票有一些不同:前者的用户群体主要是学生和教师,而后者用户群体不固定;前者一般在内网进行,而后者是外网,前者相对于后者更容易确定投票用户等。因此,基于校园网的投票安全性问题有其独特的解决方法。本文提出了3种解决办法,第1种和第2种仅仅是相对于校园网而言的,而第3种解决办法则是一般性措施。
1 解决措施探讨
1.1 使用严格的学号/工号,身份证号认证
基于校园网的投票不同于校外的一些网络投票,前者的投票群体比较固定,主要是学生和教师,而后者比较混杂。因此为了避免外界人员投票以及帮忙刷票,投票人员需要使用自己的学号或者工号以及身份证进行认证。使用身份验证的前台、后台业务流程图如图1所示:
图1 身份验证前台、后台业务流程图
在后台管理员操作界面,采用了数据批量导入的方法。首先,建立一个Student表,用以记录学生投票的情况,如表1所示。其次,由于一般本科类大学都有20000以上的学生,数据量相当庞大,而学生的信息都保存在excel中。由excel导入access/sql server中,采用了数据批量导入的方法(此处代码略去)。
表1 Student表
在前台用户投票界面,用户需要输入自己的学号/工号以及身份证后6位数字才能选择候选人。验证完毕,产生一个用户学号的session值。然后用户就可以选择候选人,进行投票,并将投票结果保存到selmenbers字段中。下面是前台记录用户投票信息的一小段代码:
1.2 每隔一段时间同一个Ip地址只能投一次票
第一个措施虽然能够有效地避免非法用户的投票,刷票等操作,但是对于合法用户,依然可以在同一台机器上使用别人的学号反复进行投票。学校的Ip地址大都是通过Dhcp分配的内部地址,空余地址比较多,在一段很短的时间内Ip地址是不会改变的。因此,可以采用每隔两小时同一个Ip地址只能投一次票的方法。此时,可以增加一个IpLimit表,如表2所示:
表2 IpLimit表
该程序的基本思想是:记录用户的Ip地址、投票时间以及学号/工号,写到IpLimit表中。遇到相同的Ip地址,则判断投票时间间隔,如果小于两小时,提醒用户不可以投票;如果大于两小时则删除原来的Ip地址和时间,记录该用户的Ip地址和投票时间。该程序的流程图如图2所示:
图2 每隔一段时间同一Ip地址只能投一次票流程图
该技术的具体实现代码如下,首先需要定义几个函数:
然后,将这几个函数插入到指定的程序位置中:
其次,在将投票信息保存到数据库中之前,需要调用函数二:
最后,在所有验证工作都结束后,将投票信息保存到数据库中后,调用函数三:
1.3 防止sql注入攻击
以上两个措施很好地解决了刷票的问题,但是SQL注入也是一种常用攻击的方法,因此不可小觑。通过此方法一些非法用户检索他人的数据,改变服务器的设置或者有意破坏他人的服务器。SQL注入式攻击不是SQL的问题,而是不适当的程序造成的。
一般有3种解决办法:替换输入字符串中的危险字符和禁止用户输入危险字符[3],如果是SQL数据库,还可以采用存储过程[4]。采用了第1种办法,主要思路是定义一个过滤非法参数的函数,这些非法参数都保存在一个字符串中,最后使用一个循环结构验证提交的参数是否在这个字符串中,如果在,则为非法参数,并且报错,反之亦然。这个函数比较简单,在这里就不将代码写上。
2 后续思考
通过以上3种办法,笔者将该投票网站很好的运用到我校各项投票活动中,使得学校相关投票工作安全、公平的进行。但是,没有绝对安全的系统,笔者希望在后面的工作中借鉴别人的一些思路和自己的思考,再加入一些安全措施。如一些研究者提出的基于CA认证的投票技术较好地解决了一些安全问题,保证了投票者的合法性,保证了投票的公正性,真实性和有效性,实现了一人一票[5]。但是如果要彻底解决安全问题,还需要考虑网络及相关硬件的安全性和可靠性,同时必须加强投票系统操作人员的管理。
3 结束语
基于校园网的投票具有参与人员多、影响面广等优点。笔者结合校园网的特性以及自己的开发经验,提出了一些安全措施,希望给相关人员一些帮助,在研究中也存在一些不足,恳请给予批评和指正。
[1] Andrea Pasquinucci.Web voting,security and cryptography[J].Computer Fraud& Security,2007,(3):7 - 8.
[2] 杨兴凯,刘宏.基于web的网上投票安全策略[J].计算机时代,2001,(3):24-25.
[3] 尚俊杰.网络程序设计—ASP(第二版)[M].北京:清华大学出版社,2011:198-199.
[4] 吉根林,崔海源.web程序设计(第二版)[M].北京:电子工业出版社,2006:230.
[5] 章美仁.基于CA的网上投票技术安全性研究[J].计算机应用与软件,2005,22(11):121-122.