首页 新闻 会员 周边

mvc下限制游客恶意刷访问量

0
悬赏园豆:120 [已解决问题] 解决于 2016-11-18 12:16

问题:根据不同的id进入模板页每次都会+1,可以无限刷新+1

求解:根据不同id进入模板页,每个id只能在浏览器前+1,限制f5无限刷新+1

试过用cookie,因技术问题 每次访问的id不同,最后还是没有实现成功

12不懂3的主页 12不懂3 | 初学一级 | 园豆:22
提问于:2016-11-03 11:22
< >
分享
最佳答案
0

cookie很容易模仿,写点脚本或代码,是分分钟的事。

ip你又只能获取到外围的,那么像爱普、长城之类的也无法解决,因为ip这里代表的是一个网络不是一台主机,你如果加上port奈何又是http,即使不是http那也很容易跳过这个问题。

——因此你可以写个插件(比如c++,flash,c#等)来进行安全链路投递(自行选择https或者直接ssl),通讯格式自定义并加随机数,插件访问pc后者设备(例如cpu)进行标识。——从而达到一台一次,那么破解你的话难度就很大了,如果从插件反编译下手,那么要熟悉该平台反编译后的语言及api等——这是恒定的难度;如果要从通讯下手,那么非对称加密是到门槛,破解出来还得分析猜测你的格式。

 

收获园豆:120
花飘水流兮 | 专家六级 |园豆:13560 | 2016-11-04 09:20
其他回答(12)
0

 可以在服务器识别的就是SessionId,做的什么东西这么有价值,还有人刷。

顾晓北 | 园豆:10844 (专家六级) | 2016-11-03 11:27

您说的太笼统了,能说一下实现思路么,

支持(0) 反对(0) 12不懂3 | 园豆:22 (初学一级) | 2016-11-03 11:37
0

除非限制ip或者登陆的用户,否则都不好实现

刘宏玺 | 园豆:14020 (专家六级) | 2016-11-03 11:49
0

1.ip1分钟最大刷多少次,最大次数限制,或者单个ip某个时间段内都算1次

2.使用登录用户,比如你们自己的会员,比如qq,微信扫码才能+1.

 

你的需求不是很清楚,不知道你到底要达到什么要求

czd890 | 园豆:14412 (专家六级) | 2016-11-03 11:55

主页-详细页面,根据id不同显示不同的内容,所以所有详细页面用的同一个actionresult,

实践了一下,获取ip为空,网上大多方法都用过,还是为空::1

因为是非营利性页面,所以没有登录用户,

支持(0) 反对(0) 12不懂3 | 园豆:22 (初学一级) | 2016-11-03 12:00

@12不懂3: 那这个页面没有什么需要防刷的呀?

支持(0) 反对(0) czd890 | 园豆:14412 (专家六级) | 2016-11-03 12:03

@calvinK: 因为是详细内容,用户需要友好的看到访问量。。。带有一点这个网站带有一点内部竞争性,每个不同的内容都是几个不同栏目的人写的

支持(0) 反对(0) 12不懂3 | 园豆:22 (初学一级) | 2016-11-03 12:06

@12不懂3: 单ip一段时间算一次,比较合适。ip都是能拿到的。::1,你是在本地电脑访问本机吧。用其他电脑访问就不会是::1了

支持(2) 反对(0) czd890 | 园豆:14412 (专家六级) | 2016-11-03 12:19
0

cookie为什么会出现技术问题呢。可以cookie和Session一起用。

思想:

在游客进入页面时,加入cookie,服务器记录Session。

刷新页面的时候,cookie值和Session值同步增加,两者的数据只要有一个正常即可

刷新页面的时候,if 一下cookie值和Session值是否超过界限。超过后,页面不再呈现,跳转到其它页面。并设置下次可访问时间,其它页面在时间到的时候可跳回。

cookie和Session需要记录用户访问的浏览器useragent,IP,我们生成的随机串,三个值能对上两个基本就可以确认为同一个用户。

盟怀部孩 | 园豆:878 (小虾三级) | 2016-11-03 11:56

游客进入页面的时候  加入cookie,session

那么在刷新页面的时候 没超过的这段时间,怎么判断,

超过后,因为用的是同一个控制器,怎么判断?

cookie记录用户的浏览器,ip和随机串,但是没记录同一个ip能刷新多少多少次,

哪怕设置了失效时间也不行

支持(0) 反对(0) 12不懂3 | 园豆:22 (初学一级) | 2016-11-03 12:04

@12不懂3: 我的错。刚才那个思路是防止无限刷新的。你把记录访问次数的方法提出来。记录时需要传入各类用户访问的参数(浏览器useragent,IP)

方法内先判断记录缓存中该用户的参数在一定时间内的记录次数不可超过2 即可

+1时候,把浏览器useragent,IP,时间 记入缓存

支持(0) 反对(0) 盟怀部孩 | 园豆:878 (小虾三级) | 2016-11-03 13:43
0

最简单的办法,某段时间内比如说5分钟内同一个ip访问某个id的页面都只计算一次,不管他是正常浏览还是f5刷新,要更精确一点可以用楼上的办法,你ip取出来是::1是因为在本机都是这样,你放外网去就不一样了

balahoho | 园豆:2050 (老鸟四级) | 2016-11-03 12:12
0

在提交请求的时候加上用户id ,可以根据用户的 id 限制只能一天之内 +1 或者是 一篇 只能 +1

CodeHsu | 园豆:5468 (大侠五级) | 2016-11-03 12:23
0

cookie可能会被清理,建议使用IP,比如一小时一个IP访问只算一次,你获取IP取出来是::1那是因为在你本地,放到web服务器上就不会了,条件结合自己需求灵活控制!

晓菜鸟 | 园豆:2594 (老鸟四级) | 2016-11-03 12:39
0

遇过这个问题  以前好像是设置时长,就是在cookie设置多少小时以内只能增长1,待我找找

该用户已进疯人院 | 园豆:208 (菜鸟二级) | 2016-11-04 16:27

我已经试过了,但是因为是一个模板页,这样设置了的话,所有文章都只能+1

支持(0) 反对(0) 12不懂3 | 园豆:22 (初学一级) | 2016-11-04 16:36
-1

博主应该考虑用 localstorage 

任意球 | 园豆:107 (初学一级) | 2016-11-07 10:43
0

如果能仅限于在微信公众号中打开的话  大概就是取得当前openid   然后缓存下来  +1 根据openid来过滤掉重复的

************** | 园豆:124 (初学一级) | 2016-11-08 09:29
0

给你一个建议:1,你如果只是为了访问f5恶意刷页面,只需要在页面中设置一个flag标记,用来记录是不是做过+1操作,然后放session中,即可,在做+1操作前,check一下flag,如果标记过,跳过+1操作。2,如果你还要限制IP,那用cookie记录一下IP和flag,原理同上,判断ip和flag.

看你的描述,应该第一种就适合你。

林小白_ | 园豆:197 (初学一级) | 2016-11-08 18:27

一个控制器,就再记录一个能区分具体内容的字段,来区分打开的不同的东西。 

支持(0) 反对(0) 林小白_ | 园豆:197 (初学一级) | 2016-11-08 18:29

@林小白_: 方法是好的,但是不管用
              我这里以 每次进来的id 判断来区分内容
            如果设置 flag 
                                    if(flag==flase&&a==ID)//a里面包含这个id不包含 +1
             {            //但是flag只做一次判断 

            flag==ture;         
              }

支持(0) 反对(0) 12不懂3 | 园豆:22 (初学一级) | 2016-11-09 10:16

@12不懂3: 不好意思,是我没表达清楚,我说的flag标记是一个标记,比如你以id作为这个标记。你上边写的,只判断a中是否包含id,是不是已经可以初步实现了?!这只是常规做法,对于恶意的攻击,通过技术手段强制刷页面,还是按你采纳的那种做法稳妥。

支持(0) 反对(0) 林小白_ | 园豆:197 (初学一级) | 2016-11-23 17:29
0

主要问题是怎么识别《是否是同一个用户》在访问你的页面。

还有浏览器的什么cookie,SessionID ,都是可以修改的,都不可信。

如果要登陆才能访问就比较可靠了,还要在注册的时候加手机验证就更好一些。

最后,不可能再搞实名认证了吧。

cppwen | 园豆:55 (初学一级) | 2016-11-18 11:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册