16.7. 防止恶意刷新与重复提交

简介:

在开发中会经常会遇到这样的需求,例如投票模块,要防止恶意刷票,下面来介绍几种解决方按:

1、来源IP / MAC地址限制
      这个是使用最多也是最广泛的方式,通过获取访问用户的来源IP地址,来限制在一段时间内所能使用的票数。
经常用电脑的老手是很容易绕出这种限制的。PPP/PPPoE拨号用户,可以通过断线重拨来更换IP地址;
 		每个网络位置会有一个全球唯一的MAC位址。所以我们也可以根据MAC地址限制用户访问

2、Cookies / Session验证
      这种方式用的也比较多,清除浏览器Cookies,就可以很容易的绕过这种限制了
	  关闭浏览器,Session就会被销毁;客户端禁用Cookie,Session也会失效;

4、验证码,包括图像,语音,电话,邮件以及回答问题
	首先说图片验证码,有些变态的网站,大家可以看到用户的注册、登录、回复、发帖等等,都会使用验证码,但是这种方式会让用户有时感觉很恶心,随着OCR(Optical Character Recognition,光学字符识别)技术的成熟,图片验证码已经不再安全,识别率可能达到90%以上甚至100%
	语音有播放方式和电话方式,听喇叭中读取字符,然后输入验证码。不要以为这是最安全的,语音是一种波形,通过DSP(Digital Signal Processing,数字信号处理)技术很容易识别
	手机短信与电子邮件,不多说了

	回答问题
	如果没有足够海量的题库,很快问题的内容和答案就会被收集。反而让正常投票的用户,觉得投票很恶心、麻烦,产生厌恶心理。渐渐的也被我们抛弃了。


5、注册用户可能投票模块
	游客不能参与,必须注册了账户才能进行投票,并且限制新注册用户,在一段时间内不能参与投票。

6、随机投票地址
	让每一个访问页面的用户得到一个随机唯一的KEY可能通过UUID/GUID生成,通过这个KEY,生成一个投票地址,该地址只能访问一次,使用过后便作废。

总结:很快就会有新的应对方式。我们只能通过上面几种方案的组合方式,增加用户刷新难度,让用户在无法在短期内实现应对方案,你没想出一种新方式。





原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

目录
相关文章
|
10月前
|
前端开发 JavaScript UED
【前端学习】—网站禁止右键、F12防复制、防查看源代码、防图片下载的方法
【前端学习】—网站禁止右键、F12防复制、防查看源代码、防图片下载的方法
禁止(403)CSRF验证失败请求中止即使使用{%csrf_token%}
禁止(403)CSRF验证失败请求中止即使使用{%csrf_token%}
|
Java API 数据库
请求地址中主动携带Cookies信息通过登录验证
最近在做一个机关单位的项目,他们的项目基本都是部署在内部网络中,并且都做了单点登录验证,即就是该网站上挂载了许多的系统和应用,访问其中的某一个系统和应用的时候,都会被单点登录拦截在登录页面,必须登录该网站,才能访问其中的系统及应用
123 0
请求地址中主动携带Cookies信息通过登录验证
|
前端开发 PHP 数据安全/隐私保护
浏览器同步发送请求之form表单提交数据
浏览器同步发送请求之form表单提交数据 上篇就文章我们讲到了同步和异步的区别,这次主要说一下在网页中如何提交同步的请求,答案就是通过form表单提交请求。 1.GET请求 HTML代码: <form action="get.php" method="get"> 账号:<input type="text" name="user"> <br> 密码:<input type="text" name="psw"><br> <input type="submit" value="登录"> </form> 1 2
|
存储 SQL 算法
最简单的6种防止数据重复提交的方法!(干货)下
最简单的6种防止数据重复提交的方法!(干货)
361 1
|
存储 前端开发 安全
最简单的6种防止数据重复提交的方法!(干货)上
最简单的6种防止数据重复提交的方法!(干货)
855 0
最简单的6种防止数据重复提交的方法!(干货)上
浅谈一下如何避免用户多次点击造成的多次请求
浅谈一下如何避免用户多次点击造成的多次请求
568 0
|
NoSQL Redis 数据库
重复提交,你是如何处理的?
幂等性就是说无论你执行几次请求,其结果是一样的。说到了幂等就不得不说重复提交了,你连续点击提交按钮,理论上来说这是同一条数据,数据库应该只能存入一条,而实际上存放了多条,这就违反了幂等性。因此我们就需要做一些处理,来保证连续点击提交按钮后,数据库只能存入一条数据。
675 0
|
网络协议 iOS开发
NSURLProtocol 拦截 NSURLSession 请求时body丢失问题解决方案探讨
“IP直连方案”主要在于解决DNS污染、省去DNS解析时间,通常情况下我们可以在项目中使用 NSURLProtocol 拦截 NSURLSession 请求,下面将支持 Post 请求中面临的一个挑战,以及应对策略介绍一下。
6490 0