谈谈单位时间内投票次数限制
2008-05-26 15:24
211 查看
我们来看看有那些方法来防止倒票:
1.Session 采用Session对象防止重复投票好像还不错,如果您利用单一浏览器进行测试,确实可以证明Session具有防止重复投票的功能,实际上开启另一个浏览器,Session变了,那么又可以投票了.为什么呢?因为每一个执行中的浏览器对应一个Session对象,虽然我们可以设置第一个浏览器的Session值,但是第二个.第三个.....无法设置了..
2.Cookie 一般利用Cookie进行设置,主要是设置Cookie的失效时间,也就是在这段时间内,这台电脑的信息被Cookie保存,你可以做允许的事情,这样我们可以利用其进行投票,比如说登录的时候将Client的IP地址赋值给Cookie,Cookies("Value").Expires="12/31/2999";用户登录的时候,我们检查Cookie是否有值,来决定他是否有权限进行投票.这种方法比Session应该好多了,重启,开启多个浏览器都被Cookie左右,但是致命的一项是Cookie是可以清除的,这样我们的设置又轻易的被破解了。
3.IP+数据库 这是目前还算有效但是不是绝对有效的方法,下面的示例将记录我做的教师测评的限制IP的源码.用户登录的时候,取得Client端的IP,并且与系统数据库存储的IP比较(系统存储的数据可以按照时间的降序排列,这样如果有重复IP,我们只比较最上面的那条就可以了,具体看代码!):如果相同的话,再次比较时间,如果两者时间差超过半小时则可以投票,否则警告信息:一台电脑半小时内只能投票一次;如果不相同的话,就是说明这个IP没有投票过,那么可以进行投票,同时更新IP和时间纪录!这种方法也有一致命的漏洞---动态IP地址,比如ADSL还有其它的动态变化的IP等等,这样也就失去作用了。
4.IP+Cookie 这种方法又多了一层保障,但是对于动态IP地址+删除Cookie的组合来说还是可以破解的.
5.Mac 网卡的物理地址在世界唯一,我们可以通过网卡的Mac地址(物理地址)来进行锁定电脑,这方法看起来不错,但是很多软件都能制造伪Mac地址....
6.就是用户注册ID投票,这样限制一个ID只能投票一次或者单位时间内只能投1次效果是非常好的,但是一个人也可以注册很多用户ID啊!!
7.通过输入验证码的方法,但是很多软件都能识别验证码..
所以上述7中方法没有一种是100%有效的方法,正所谓“道高一尺,魔高一丈”。
大家根据自己所需,按照自己的要求选择,所谓防君子,不防小人嘛。
有更好方法的朋友请留言!
1.Session 采用Session对象防止重复投票好像还不错,如果您利用单一浏览器进行测试,确实可以证明Session具有防止重复投票的功能,实际上开启另一个浏览器,Session变了,那么又可以投票了.为什么呢?因为每一个执行中的浏览器对应一个Session对象,虽然我们可以设置第一个浏览器的Session值,但是第二个.第三个.....无法设置了..
2.Cookie 一般利用Cookie进行设置,主要是设置Cookie的失效时间,也就是在这段时间内,这台电脑的信息被Cookie保存,你可以做允许的事情,这样我们可以利用其进行投票,比如说登录的时候将Client的IP地址赋值给Cookie,Cookies("Value").Expires="12/31/2999";用户登录的时候,我们检查Cookie是否有值,来决定他是否有权限进行投票.这种方法比Session应该好多了,重启,开启多个浏览器都被Cookie左右,但是致命的一项是Cookie是可以清除的,这样我们的设置又轻易的被破解了。
3.IP+数据库 这是目前还算有效但是不是绝对有效的方法,下面的示例将记录我做的教师测评的限制IP的源码.用户登录的时候,取得Client端的IP,并且与系统数据库存储的IP比较(系统存储的数据可以按照时间的降序排列,这样如果有重复IP,我们只比较最上面的那条就可以了,具体看代码!):如果相同的话,再次比较时间,如果两者时间差超过半小时则可以投票,否则警告信息:一台电脑半小时内只能投票一次;如果不相同的话,就是说明这个IP没有投票过,那么可以进行投票,同时更新IP和时间纪录!这种方法也有一致命的漏洞---动态IP地址,比如ADSL还有其它的动态变化的IP等等,这样也就失去作用了。
4.IP+Cookie 这种方法又多了一层保障,但是对于动态IP地址+删除Cookie的组合来说还是可以破解的.
5.Mac 网卡的物理地址在世界唯一,我们可以通过网卡的Mac地址(物理地址)来进行锁定电脑,这方法看起来不错,但是很多软件都能制造伪Mac地址....
6.就是用户注册ID投票,这样限制一个ID只能投票一次或者单位时间内只能投1次效果是非常好的,但是一个人也可以注册很多用户ID啊!!
7.通过输入验证码的方法,但是很多软件都能识别验证码..
所以上述7中方法没有一种是100%有效的方法,正所谓“道高一尺,魔高一丈”。
大家根据自己所需,按照自己的要求选择,所谓防君子,不防小人嘛。
有更好方法的朋友请留言!
相关文章推荐
- 投票系统-如何限制单位时间内投票次数
- 利用IP地址限制单位时间内投票次数
- 在ASP.NET MVC下限制同一个IP地址单位时间间隔内的请求次数
- 使用共享内存的单机操作单位时间限制类
- web api 限制单个IP在一定时间内访问次数
- 次数加时间限制及限制代理访问或在服务器上面禁掉可疑IP访问
- 在nginx中实现单位时间内限制访问频率的教程
- Redis限制在规定时间范围内登陆错误次数限制
- 蚂蚁分类信息系统5.8 手机注册时限制短信验证码发送次数及间隔时间
- [chrome插件]限制上微博:自我控制每天上微博网站的时间和次数
- ipt_connlimit限制并发,ipt_recent限制单位时间内的请求数目
- 使用redis进行用户接口访问时间次数限制
- 在一定的时间内限制访问次数
- VB程序使用时间和次数限制
- vc 限制软件的使用次数或时间
- 限制页面请求在一定时间内的访问次数
- asp.net中限制用户单位时间请求数
- Safengine 试用次数限制 & 试用时间限制
- 【Java】SpringMVC项目利用Shiro设置固定时间内密码登录重试次数限制
- springboot和redis控制单位时间内同个ip访问同个接口的次数