日期:2014-05-18  浏览次数:20684 次

网上投票系统,安全性上应该考虑哪些方面
做一个网上投票系统,从安全性上应该考虑哪些方面。我自己想了想,避免重复提交、同一IP地址提交等等。但是肯定不全面,而且如何避免同一IP提交等这些具体技术问题怎么具体实现,欢迎大家讨论,献计献策!谢谢啦!

------解决方案--------------------
关注
------解决方案--------------------
一定时间内同一IP只能投一次
实现方式有很多,比如可以将投过票的ip存储在数据库里,并且把投票时间也存进去,每次投票的时候检查当前ip是否已投过票,没有就允许投票,否则将当前时间和上次投票的时间做对比,满足一定时间间隔就允许,否则禁止,如果把投票间隔时间设置为无限大的话,就是禁止同一IP重复投票了,这样很灵活。
------解决方案--------------------
IP应该不能伪造吧,我们拿到的是它机器广域网上的IP,并不是局域网他可以自己改的IP,应该不能伪造吧。不过我也不太清楚,也许可以吧。
------解决方案--------------------
对同一IP进行限制,一直有很大弊端,就是对于众多的企事业单位和网吧那样的局域网来说,外部公用IP是一样的。不能因为某一个人投过票,就让同一局域网内其它人都不能再投票吧?

即使只是让同一IP不能在半小时之内连续投票,试想一个至少500人的局域网,这种限制将造成怎样的混乱和埋怨??

所以还是针对单台机器来限制得好。

对于一般用户来说,用COOKIE已经足够了。
------解决方案--------------------
theforever(碧海情天) 说得对,用COOKIE,当然还有一个更好的方法,就是限制MAC地址,当用户投票提交时用JS读取到MAC地址和投票结果一起存入数据库,这是相当安全也是相当麻烦的方法,因为COOKIE只要懂一点电脑的人就可以清空的,但会改MAC地址不见得有几个人会改,哈哈
------解决方案--------------------
最彻底的办法是:增加投票成本,如投票必须传真身份证等。当然太麻烦,谁都不喜欢的。

判断IP,MAC只能对菜鸟管用,对于黑客觉得是白搭,因为你要验证的数据是可以轻易伪造的,http请求可以随便写。

另外提供2种投票验证的好方法,适用于小范围,比如企业内部:
1、投票者需要登录,登录后如果该用户已被授权拥有投票权,则才能提交投票。
2、给每个拥有投票权的用户发送类似邀请码的东西,投票时需提供该邀请码。

要求不高、又要求方便操作的话,可以用IP+Cookie的方式,也可以结合其他参数综合性判断,比如用户浏览器版本、屏幕大小、硬盘序列号。