`

关于前端各种刷的思考

阅读更多

     

刷票行为,一直以来都是个难题,无法从根本上防止。

但是我们可以尽量减少刷票的伤害,比如:通过人为增加的逻辑限制。

基于 PHP,下面介绍防刷票的一些技巧:

1、HTTP_REFERER : 校验 $_SERVER['HTTP_REFERER']。可伪造,使用 CURL

curl_setopt($ch, CURLOPT_REFERER, 'HTTP://www.baidu.com');(攻击手段)

2、IP限制:加上 IP 投票限制。可伪造,使用 CURL

$ip = ***.***.***.***;
$header = array(
    "CLIENT-IP:{$ip}",
    "X-FORWARDED-FOR:{$ip}",
);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);(攻击手段)

3、User-Agent:校验 $_SERVER['HTTP_USER_AGENT']。可伪造,使用 CURL

curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 5.0)");(攻击手段)

4、验证码:采用非常复杂的验证码,可以防止一些菜鸟攻击者。

a:但是专业刷票机可以攻破。如果不用验证码,投票基本就歇菜了。

b:验证码获取方式,采用异步加载,即点击输入框时,才去请求。

c:投票成功后,删除验证码的 Session。

5、登录:用户必须登录才能投票。

a:可以攻破,写程序不断注册新用户,然后用来投票。(攻击手段)

b:指定大于某个 UID 的用户,或者某段时间内活跃的用户,才能进行投票。(预防对策)

6、限时投票:投票程序,只在某个时间段内开放。否则,对方半夜刷票,你咋办?

a:从 早 8 点 至 晚 23 点。(预防对策)

7、投票间隔:用户投票后,需要隔多长时间才能继续投。

a:很多投票站点基本上都有这个限制,但是对于更改 IP的攻击,就没办法了。

b:针对 UID 限制,可以有效防止攻击,但是可以使用批量注册马甲用户。

8、投票结果展示:延迟展示,友好展示。

a:页面上投票,JS 立马加1,但是刷新页面,不一定立马展示最新投票结果。

b:返回状态给页面(感谢您的投票!或者 投票成功!至于有没有成功,另说了!)

9、补票逻辑:常见于一些软件评选之类的投票。

a:有时候软件厂商会为了让自己的票数高一点,会私下给活动举办商 $,后台进行补票。

b:后台跑脚本,采用 IP 库,缓慢平滑的增加票数。

10、扣量逻辑:常见于一些软件评选之类的投票。

a:这是个杀手锏,后台跑脚本实时监控异常增长(刷票)的项,然后实施扣量逻辑。

b:即对于这个项,投 10 票才算一票。

11、Cookie:常用的手段。比较低级。

a:投票后,在客户端写入 Cookie,下次投票时判断 Cookie 是否存在。

b:但是,这种方式非常容易攻破,因为 Cookie 可删除。

12、加密选项 ID:对一些投票选项的ID,进行随机加密。

a:加密算法,加Salt,并且设置有效时间,比如5分钟内。

b:服务器端进行解密并且验证。 

13、人工刷票:没办法防。。

a:雇佣了一批水军,进行刷票,这个真没辙,人家确实是花了血本的。

转自:http://segmentfault.com/a/1190000000656336
分享到:
评论

相关推荐

    前端面试技巧.zip

    在面试前,可以通过刷LeetCode、HackerRank等平台的题目提升算法能力,阅读源码理解框架原理,参与开源项目积累实战经验,以及参加模拟面试来熟悉面试流程。记住,面试不仅是检验知识,也是建立个人品牌的过程,因此...

    电子政务-多功能电动刷.zip

    这个压缩包文件名为"电子政务-多功能电动刷.zip",从标签"资料"我们可以推断,它可能包含了一份关于电子政务的详细报告或教程,特别地,它可能与“多功能电动刷”这一概念在电子政务中的应用有关。 "多功能电动刷...

    上班时间刷leetcode-leetcode-code:本项目用于存储Leetcode的代码

    上班时间刷leetcode LeetCode 记录自己的刷题思路,js代码不在维护,以后以py代码为主。 规范如下: 文件名格式[题号][题目名字],文件内容:题目描述、关键思路、解题代码、tag、复杂度 刷题相关思考 刷题开始于...

    LeetCode:针对LeetCodeJavaScript AC解决方案

    二刷:可以尝试思考每一道转变是否可以使用其他算法解决以及它们之间的优劣。 Hard类型的过渡相对难度比较大,一开始接触这类过渡可能会把你心态刷炸,所以等基本功稳健之后,再选择通过此类转化来进阶提升。 :...

    leetcode分类-js-offer-algo::globe_with_meridians:JS版剑指offer题解(用心整理)

    肯定有质变),但是知识不用就会生疏,过个一两年你这段经历就等于白费,如果加入了输出的过程,一方面你在知识输出的时候就会对这个问题本身产生更多更细致的思考,另一方面也利于事后的回顾,可

    Bose Soundlink Mini2-维修记录

    - 经过排查,确认前端芯片输入已出现问题。 - 临时使用二极管旁路解决,成功开机并验证其他功能正常。 #### 四、总结与思考 - **维修经验**:对于此类无设计图纸的复杂电子设备,维修时需要耐心地根据功能和接口...

    无叶风扇工作原理.docx

    前端狭窄后端宽厚的腔体会迫使部气流朝后端更宽阔的空腔运动,不断“相互挤压”的空气最后只能从细小的狭缝中“泄漏”出去,持续运行一段时间后,这种结构能够渐渐加强送风压力,使出风口缝隙的气流更加快速。...

    regx:基于 Authme 的网页注册系统

    此项目为 的重写版,新版本重写了整个前端模板,同时使用 Node.js 重写了后端,修复了一些历史遗留问题 警告信息 本项目年代久远,期间衍生出 authlib-injector 等外置登录技术,无论在安全性、易用性上都比本项目...

    leetcode题库-leetCode:leetcode题库,在刷题中提升自己的算法及编程思想,记录自己刷题时的思维过程

    前端工作2年多,依然感到自己在JavaScript基础知识、编程能力、算法等方面的弱势,建立此仓库,记录自己刷leetCode题库的历程,提升编程思维,熟练原生API操作。但每天不要占用自己太多时间到这里来,每天思考一两题...

    餐饮管理系统

    3. **问题解决**:在开发过程中遇到问题,锻炼解决问题的能力,提高独立思考和解决问题的技能。 4. **团队合作**:如果是一个团队项目,可以学习如何与团队成员有效沟通,协同完成任务。 总结,餐饮管理系统不仅为...

    不是机器人保险库:我不是机器人数字花园的保险柜

    用户可以从这些日志开始了解项目的进展和作者的思考过程。 从标签"JavaScript"我们可以推断,这个项目可能涉及到使用JavaScript编写的代码,尤其是与用户验证相关的部分。JavaScript的使用可能涵盖了前端验证,例如...

    2013火车票抢票软件

    在探讨“2013火车票抢票软件”的知识点时,我们主要聚焦于以下几个...综上所述,“2013火车票抢票软件”不仅是技术的体现,更涉及社会伦理、法律法规等多方面考量,其背后的知识点丰富而复杂,值得我们深入研究和思考。

Global site tag (gtag.js) - Google Analytics