网站防刷方案

网站重复请求解决方案

这是讲述如何防止重复请求你的网站, 包括如,爬虫,数据采集,刷排名,批量注册,批量发帖,利用漏洞获取网站数据等等。

1. 访问网站所涉及环节

简单说就是重复相同的请求

首先看看访问流程所设计的每个环节

User -> Browse -> CDN/Proxy Cache -> Web Server -> App Server / fastcgi pool -> Cache -> Database
		
		

大部分网站都是这样的结构:用户,浏览器,CDN或反向代理,Web服务器,应用服务器,缓存,数据库

这个访问过程中所涉及的设备

PC -> ADSL/Cable/Ethernet -> Route -> ... -> Route -> Firewall -> Load Balance -> Switch -> Server
		
		

我们看看从那些环节可以截获用户的刷新行为

可控制环节

  1. CDN / 反向代理,提供一些基本防护功能,过于简单。
  2. 3/4层设备,防火墙/路由器/交换机,主要还是靠防火墙设备,例如Cisco ASA 系列防火墙,都提供IPS/IDS服务(需要单独采购,设备默认没有)主要是针对IP地址的请求频率做出策略控制,
  3. 4/7 层负载均衡设备, 一半负载均衡设备都附带此功能。但不是他主要的功能,没有能力购买防火墙设备的中小公司可以使用该功能,7层功能非常强大,但都是通用功能,不一定满足你的个性化需求。
  4. 浏览器,这是主要是改变浏览器端设置,利用Cookie变化,Javascript等技术,阻止重复请求
  5. WEB 服务器,在web上通过扩展模块与相应的配置也能达到一定的效果
  6. 应用服务器, 主要是通过编写程序在阻止恶意访问。

依次从上至下,越能提前在上一层阻止行为越好,否则就在下一层截获。

2. 浏览器款控制方案

通过 Javascript 防止重复点击提交按钮,通常的做法是将按钮禁用 通过 disabled 属性实现。下面是Jquery例子

$("form").submit(function(){
  $(":submit",this).attr("disabled","disabled");
});
		

在上面的例子基础上可以改良,增加计时器,限制一定时间内不可重复提交。

通过 Cookie技术控制重复访问动作

访问第一个页面 login.example.com/form.ext 的时候设置一个 cookie 变量
访问第二个页面 login.example.com/auth.ext 的时候判断上一个页面设置的 cookie 是否有效,如果无效拒绝访问。
		
		

可以进一步增加难度,例如用户注册分为很多步骤,每一个步骤都会设置一个标记,如果用户行为不是按照顺序访问,直接在最后一个页面提交,明显可以判断是非法行为。

这里的方案是针对人工操作,更多的时采用程序实现刷新,采集,爬虫等等。

3. CDN 与 反向代理

CDN 都提供一些基本的防护功能,主要是针对 IP 地址, URL 做一些限制

如果自己做反向代理,控制权更大&#x

  • 14
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

netkiller-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值