示例#1
0
 public function run($client)
 {
     // todo debug模式下记录运行详细日志
     unset($script);
     foreach ($this->scripts as $key => $script) {
         $runner = new $script['script']();
         $result = $runner->run($script['config'], $client);
         Common::Log()->debug(__METHOD__, 'Running script detection ' . $script['script'] . ' with result ' . $result);
         if (!$result) {
             $this->error = $runner->getError();
             Common::Log()->info(__METHOD__, 'Running script detection ' . $script['script'] . ' with error ' . $this->error);
             return false;
         }
     }
 }
示例#2
0
 private function checkCodeCount($checkCode)
 {
     if ($checkCode) {
         // 设置白名单标识
         $this->setWhiteFlag();
         // 重置统计信息
         $this->unsetCount();
         Common::Log()->info(__METHOD__, sprintf('Ip[%s] session[%s] robot challenge succeed', $this->client['ip'], $this->client['session']));
         return true;
     } else {
         if ($checkCode === false) {
             Common::Log()->warn(__METHOD__, sprintf('Ip[%s] session[%s] robot challenge failure', $this->client['ip'], $this->client['session']));
         }
         $ipFailure = intval(Common::M()->get($this->client['ip'], self::IP_FAILURE_PREFIX));
         $ipFailure++;
         if ($ipFailure > Common::getConfig('ip_failure_limit', $this->config)) {
             Common::Log()->warn(__METHOD__, sprintf('Ip[%s] robot challenge fail too many times', $this->client['ip']));
             // 如果验证失败则在指定挑战失败上限次数后将IP加入全局黑名单
             $this->wafPHP->addBlackList();
             // 重置统计信息
             $this->unsetCount();
             return false;
         } else {
             // 累加该IP挑战失败次数
             Common::M()->set($this->client['ip'], $ipFailure, Common::getConfig('ip_failure_lifetime', $this->config), self::IP_FAILURE_PREFIX);
             return null;
         }
     }
 }