Skip to content

CustomAction: Browser Verify

AlexaZhou edited this page Mar 9, 2016 · 5 revisions

功能介绍

Browser Verify可以验证发起请求的客户端是否为浏览器,并拦截来自非浏览器客户端的请求

背景知识

Matcher

配置说明

可以定义多条规则,每条规则包含以下参数

  • Enable
  • Matcher
  • Verify Type
    • Cookie
    • JavaScript

执行过程

寻找规则

每收到一个请求,VeryNginx将按照从上到下(序号递增)的顺序,取每一条规则的 Matcher 进行匹配测试,当找到第一个符合的Matcher时,即由这一条规则进行处理,停止后续匹配

应用规则

当收到一个请求时,VeryNginx 会通过算法得到一个Token

  • 当配置Verify Type为Cookie时:

用户的Cookie中没有带有这个Token时,将会返回一个302重定向,将用户重定向到当前地址,并在http响应头中设置cookies。如果客户端是浏览器,将自动带上这个Token再继续访问,此时将被放行。如果客户端是其他工具,并且该工具不支持302以及http响应头中的set cookies字段,将无法继续访问

  • 当配置Verify Type为JavaScript时:

和 Type 为 Cookie 时原理类似,不同之处在于没有Token时,返回一个网页,并通过内嵌在网页中的JavaScript来设置Cookies并发起重定向。需要浏览器支持JavaScript才可以验证通过

Token生成算法原型

Token = hash( client_ip + UserAgent + key )

其中Key为VeryNginx第一次运行时产生的随机数

这样可以为每个用户和浏览器产生不同的Token,并且无法伪造

注意事项

  • 注意规则的顺序,防止一个严格的Matcher被排名更前的宽松Matcher覆盖,导致规则不起作用
  • 本功能可能会影响搜索引擎抓取信息,建议只针对部分页面开启,或者仅在被攻击时开启
Clone this wiki locally