投票系统-如何限制单位时间内投票次数
如何 时间 限制 次数 单位 投票
2023-09-14 08:59:48 时间
限制对于防止倒票没有什么绝对的好方法,尤其是用户不需注册的情况下的投票,我们来看看有那些方法来防止倒票:
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等等,这样也就失去作用
了(由于我们学校是静态IP,所以我这样做啦,o(∩_∩)o...哈哈).
4.IP+Cookie 这种方法又多了一层保障,但是对于动态IP地址+删除Cookie的组合来说还是可以破解的.
5.Mac 网卡的物理地址在世界唯一,我们可以通过网卡的Mac地址(物理地址)来进行锁定电脑,这方法看起来不错,但是很多软件都能制造伪Mac地址....
6.就是用户注册ID投票,这样限制一个ID只能投票一次或者单位时间内只能投1次效果是非常好的,但是一个人也可以注册很多用户ID啊!!所以上述6中方法没有一种是100%有效的方法,大家根据自己所需,按照自己的要求选择,所谓防君子,不防
小人嘛o(∩_∩)o...哈哈
python 办公自动化系列 (1) 从22053条数据中统计断网次数并计算平均断网时间 找到通网后的第一个日志和断网前的最后一个日志,然后提取 date 列的时间做减法,获得本次断网时间,之后用同样的方法统计每次的断网时间,最后计算总的断网次数和断网时间的平均值
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等等,这样也就失去作用
了(由于我们学校是静态IP,所以我这样做啦,o(∩_∩)o...哈哈).
4.IP+Cookie 这种方法又多了一层保障,但是对于动态IP地址+删除Cookie的组合来说还是可以破解的.
5.Mac 网卡的物理地址在世界唯一,我们可以通过网卡的Mac地址(物理地址)来进行锁定电脑,这方法看起来不错,但是很多软件都能制造伪Mac地址....
6.就是用户注册ID投票,这样限制一个ID只能投票一次或者单位时间内只能投1次效果是非常好的,但是一个人也可以注册很多用户ID啊!!所以上述6中方法没有一种是100%有效的方法,大家根据自己所需,按照自己的要求选择,所谓防君子,不防
小人嘛o(∩_∩)o...哈哈
python 办公自动化系列 (1) 从22053条数据中统计断网次数并计算平均断网时间 找到通网后的第一个日志和断网前的最后一个日志,然后提取 date 列的时间做减法,获得本次断网时间,之后用同样的方法统计每次的断网时间,最后计算总的断网次数和断网时间的平均值
相关文章
- js获取现在时间_js中如何动态显示日期时间
- 搞技术,如何写好技术文档?
- ChatGPT提高你日常工作的五个特点,以及如何使用它来提高代码质量
- 如何将 Power BI 模板化,一键构建出一切
- Deepin下如何安装Pyenv的步骤记录
- 资深架构师谈架构(三):如何做好架构之识别问题详解架构师
- Oracle 视图 USER_COL_COMMENTS 官方解释,作用,如何使用详细说明
- 干细胞研究阐明压力如何影响毛发生长
- MySQL如何快速查询时间字段(mysql时间字段查询)
- 临时表MySQL如何清空临时表的数据(mysqlin截断)
- 如何解决 Windows-Linux 双启动设置中显示时间错误的问题
- 国产工业软件如何不掉队?
- Linux如何轻松查看当前时间(怎么查看linux时间)
- Linux系统中如何安装和配置NTP时间同步服务(linuxntp安装)
- 轻松享受多媒体体验:Linux操作系统如何高效播放视频(linux播放视频)
- 忘记Oracle密码:如何解决?(oracle密码忘记)
- 如何实现 MySQL 数据库主从同步,同步表数据?(mysql主从同步表)
- 如何在 Linux 上配置时间同步:教你简单实用的方法(linux配置时间同步)
- 如何在MySQL中使用时间函数加减日期?(mysql时间加)
- MySQL如何截取时间字段?教你轻松掌握!(mysql中截取时间)
- MySQL如何将日期时间转换为秒数(mysql 时间 转秒)
- 让你轻松解决如何正确卸载C Redis(怎么卸载c redis)
- MySQL如何查询最大时间值(mysql中去最大时间)
- TP框架下如何使用Redis加速Web开发(tp框架连接redis)
- 学习MYSQL必备一步步教你如何下载视频教程(MYSQL下载视频文案)
- MySQL如何进行两时间的比较(mysql 两时间比较)
- Mysql如何优化达到上万qps(mysql上万qps优化)
- Oracle数据库中如何比较时间(oracle 中时间比较)
- 戳如何在Oracle中创建时间戳(oracle中创建时间)
- 如何正确使用Redis设置key的原则(redis设置key原则)