当前位置: 代码迷 >> Java Web开发 >> 网站ip访问频率如何控制
  详细解决方案

网站ip访问频率如何控制

热度:60   发布时间:2016-04-16 22:20:42.0
网站ip访问频率怎么控制
一般网站有很多功能比如说,发帖,回帖,修改资料等,怎么控制他们的访问频率,比如说,修改资料时,可以快速点击修改按钮发送请求,怎么控制这种恶意行为?
我想到的是
1:加时间戳,把时间信息放在用户回话session里,但是有很多功能,难道都要放一个时间戳,那这样session里面存的东西不是有很多吗?
求大神们怎么解决这种行为的?
------解决方案--------------------
点击之后,JS控制灰掉按钮,提交请求,ajax回来之后再放开。
------解决方案--------------------
为什么人家点击按钮,发送消息是恶意的呢?

你可以动过javascript控制,让他不能点击按钮呗,不过这样做就不人性化了

另外一种方式,你可以通过s:token防止重复提交,前台页面给他一个友好提示就可以了,人家正常的点击你肯定不能禁止呀!
------解决方案--------------------
数据里加上一个更新时间,或者在会话里加一个标识,很多种方法可以控制。这是控制业务访问

要控制IP的话,直接在路由上,或者在服务器那层控制,不要放到应用层控制
------解决方案--------------------
引用:
Quote: 引用:

数据里加上一个更新时间,或者在会话里加一个标识,很多种方法可以控制。这是控制业务访问

要控制IP的话,直接在路由上,或者在服务器那层控制,不要放到应用层控制

这个我知道,加时间戳,但是如果所有类似的业务加个时间戳,以后扩展有点不好,我就是想问有什么比较好的方法解决这个问题


没觉得加时间戳有什么不妥的,你要是觉得加时间戳的地方太多,写个过滤器统一过滤就好了。你认为加时间戳对什么样的扩展有影响?
------解决方案--------------------
我觉得这是正常操作。
如果你想控制每一个操作完才能点其他的就加个弹出层覆盖在上面
------解决方案--------------------
或者ajax改成同步请求,必须等待返回你才能点其他的
------解决方案--------------------
把按钮变灰是一种,还可以不变灰,不过加个变量,如果为false,点击后就return false。
------解决方案--------------------
如果防止恶意程序攻击,发送大量http请求阻塞服务器,是不是有相关硬件层次的防火墙?

不太了解,但这应该也算DDOS的一种吧?
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

数据里加上一个更新时间,或者在会话里加一个标识,很多种方法可以控制。这是控制业务访问

要控制IP的话,直接在路由上,或者在服务器那层控制,不要放到应用层控制

这个我知道,加时间戳,但是如果所有类似的业务加个时间戳,以后扩展有点不好,我就是想问有什么比较好的方法解决这个问题


没觉得加时间戳有什么不妥的,你要是觉得加时间戳的地方太多,写个过滤器统一过滤就好了。你认为加时间戳对什么样的扩展有影响?

比如说修改资料这里现在是间隔时间60秒,以后可能要改成30秒,这样肯定要去修改代码了,你说的用过滤器,但是有些时间间隔不一样,不统一


配置文件会写不?嫌重启麻烦搞个动态配置中心可以不?

间隔时间60秒和30秒差别真心不大,我不知道你这是不是实际的需求,按照我的经验来看,这种时间一般都没有人去扣到底是30秒还是60秒,上线以后基本就不会 看这种细节了
------解决方案--------------------
引用:
Quote: 引用:

或者ajax改成同步请求,必须等待返回你才能点其他的

那如果恶意行为呀?比如说写个循环,程序恶意访问你的服务器,一下子就拥堵了,就是要限制他们的访问频率,求解?3q


可以使用iptable禁止访问。
------解决方案--------------------
引用:
比如说当某个ip访问频率太高了,自动限制这个ip的访问频率,iptable不行吧,难道只能写程序限制了?


还是写程序吧。防火墙一类的东西,规则可变性太低了。不过,写程序,对流量攻击的应对,没有软硬件防火墙能力高。

所以,看你的主要目的了。防止恶意刷票之类的,程序足矣。如果是防止流量攻击之类的,程序肯定不行。软硬件防火墙都未必能搞定。
------解决方案--------------------
在前台你就用JS控制一下按钮呗,按下了之后禁用,服务器有反应了才解禁
但是前台是不可能完全防止恶心攻击的,毕竟JS HTML代码随意改。

要防止攻击就要你后台有足够的防护能力,比如侦测同用户多次快速操作,同IP恶性流量攻击等,一旦侦测到,马上限制其访问,比如不响应其请求的服务。

但如果别人玩真的DDOS攻击,你没有专业防护软硬件配套也是没用的,你不能在受到攻击时分流的话照样死翘翘。
------解决方案--------------------
用session的话没问题啊,session本来就是处理这种临时变量的。扩展性的话你把获取时间比较时间的方法做成接口,也不是很有损扩展性啊。
其他的方法我想不出有比session更快更方便的,要是你这个比较时间的过程太长,那不倒帮了攻击者的忙。。
  相关解决方案