鲁豫有约采访卞正伟:如何设计一套较完善的防止作弊的网络投票系统

来源:百度文库 编辑:九乡新闻网 时间:2024/05/03 21:35:17
在信息化建设越来越完善、网民群体日益庞大的今天,网络投票因其实施费用低、群众参与度广等优点已经成为民主评议的一个重要方式。但是,网络投票又很容易作弊,本文作者也设计有一套通用投票软件它能适用于目前大部分的网络投票活动。舞弊的网络投票活动不能反映投票群众的真实想法,扰乱了投票正常秩序,使投票结果变成一个没有意义的、夸张的数字游戏。长此以往,网络投票结果将越来越缺乏公信力,网民也将失去了参与的兴趣,网络投票也就没有存在的必要了。

难道刚刚兴起,方便快捷的网络投票真的会这么快走向消亡吗?作者认为不是的。当前网络投票之所以容易作弊,跟很多投票系统的设计不完善有很大的关系。中国网民众多,各个网站的网管也不少,但毕竟互联网是新鲜事物,绝大部分的网管只会维护网站的正常运转,并不具备设计或改进投票系统的能力。他们使用的投票系统往往是向第三方购买或直接网上免费下载的,然后简单的设置一下,改改界面就开始使用。而软件服务在中国还做得比较差(不管有偿无偿),买回来或免费下载回来的投票系统可能是几年前的技术,一些漏洞都没有修补(如SQL注入、X-Forwarded-For注入等),这样的投票系统很容易被人为作弊,甚至数据库都被篡改。

那么怎样的投票系统能比较有效的杜绝人为作弊呢,作者认为应该从以下几个方面去考虑:

一、采取有效的IP限制,一个IP只能投一票。
目前网络上绝大部分的投票活动都是一个IP一天可以投一票,少数没有IP限制(采取客户端Cookie限制的也属于没有IP限制),极个别的才是一个IP只能投一票。
如果不是为了增加投票网站的流量或点击率,作者认为投票活动应该采取严格的IP限制,一个IP参与一次足够了,不需要重复投票。
在获取客户端IP方面,应取消使用HTTP_X_FORWARDED_FOR,因为HTTP头的"X_FORWARDED_FOR"属性很容易伪造客户端IP地址,个人认为还是只支持REMOTE_ADDR比较好。

二、加入验证码。
验证码能比较有效的杜绝网络机器人,在一些注册、登录界面中我们经常可以看到。网络投票活动中,也应该加入验证码,以防止使用投票软件作弊。但是作者不推荐使用中文验证码,为方便投票网民的录入,只要英文、数字就行了,随机变形、旋转,这样也很难被软件识别。如下图:



三、投票数据每次提交都不一样。
如果每次投票数据都不一样,那就很难使用软件发送固定数据包了。

四、多级跳转,并使投票网址动态变化。
这样做的好处就是使投票目的网址能不断变化,用软件向固定地址发送数据包就没有意义了。

五、要求在投票页面停留一段时间后才能投票。
比如,必须访问投票页面3分钟后投票才有效,但是这个时间不能使用客户端脚本(VBScript、JavaScript)来限制,使用Session验证才有实际意义。

六、设定每天投票数量上限。
估算投票网站的流量,制定一个每天投票数量的上限,如一天最多只能为一个投票对象投1000票,超出的不记录。

七、设定投票最短时间间隔。
为了防止对某个投票对象的集中投票,可以限定1分钟之内不能对同一个投票对象投票,即使更换IP也不可以。

八、把验证码或其它验证数据发送到邮箱,并限制每个邮箱只能投一票。

九、其他方法。
1、如可以根据投票速度设置一个反转开关,当速度到达多少票/分钟时,每投一票票数减一。
2、不反馈投票成功或失败的信息,票数不公开或不实时更新。
3、回答一些有关投票的验证问题等。