PHP访问频率限制,防CC攻击,支持上万并发 - 唐小叔TOP笔记



    由于自己的API平台经常被频繁请求,还偶尔被CC攻击,所以自己开发出了一套防止非正常高频率请求和防止一般CC攻击的PHP版本。

    优势:

    简单易用,无论你懂不懂PHP开发,只要会复制粘贴就行。
    Memcached内存缓存技术,高性能,高并发。
    精准无误,0误封。
    能防护QPS10000以内的CC攻击,看机器配置,有可能更高。
    支持范围较广,直接你网站支持PHP就行。
    源码简单,可自行修改,可以套自己喜欢的前端模板主题。

    要求:

    PHP版本 ≥ 7.2
    PHP需安装Memcached扩展
    Memcached ≥1.6

    使用方法:

    以下开源代码添加到你网站核心文件中,相当于你网站任何页面都会引用的一个文件。类似于:config.php

    WordPress网站添加到根目录的/index.php头部即可。

    其他PHP网站根据你的程序逻辑决定。

    完整代码如下(点击下方‘运行代码’按钮可查看效果!可全选代码自行复制):

    <?php
    /**
    * 防止频繁请求,防范CC攻击,支持上万并发
    * 原创作者:小伟
    * 转载请保留版权,谢谢!
    */
    ini_set("display_errors", "Off");
    error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
    extension_loaded('memcached') or die('memcached扩展未安装!');
    $logPath = $_SERVER['DOCUMENT_ROOT'] . '/waf/waf.log'; //日志记录文件保存路径,$_SERVER['DOCUMENT_ROOT']是网站根目录
    $fileht = $_SERVER['DOCUMENT_ROOT'] . '/waf/ban.log'; //被拉黑IP记录文件保存路径
    if (!file_exists($logPath)) {
    @mkdir($_SERVER['DOCUMENT_ROOT'] . '/waf/', 0777, true);
    @file_put_contents($logPath, '');
    @file_put_contents($fileht, '');
    }
    $allowtime = 2; //防刷新时间(秒)
    $allownum = 5; //防刷新次数(比如2秒5次,超过就警告)
    $allowRefresh = 10; //在此警告次数之后拉黑IP
    $bantime = 600; //封禁时间,超时自动解封(秒)
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'] ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'];
    $uri = $_SERVER['PHP_SELF'];
    $cache = new Memcached();
    $cache->addServer('127.0.0.1', '11211') or die('memcached连接失败!');
    $inban = $cache->get('waf-ban-' . $ip);
    if ($inban) {
    header("HTTP/1.1 403 Forbidden");
    exit('<h1>403 Forbidden 非法访问</h1>
    <p>你的请求似乎不符合常理,已被服务器防火墙拦截,如有疑问请联系管理员QQ49463738</br>如果你在开发测试过程中超频被封IP,请等待' . ($bantime / 60) . '分钟后自动解封</br>你的IP:' . $ip . '</p>');
    }
    $wafarr = $cache->get('waf-' . $ip);
    if (!$wafarr) {
    $wafarr = [
    'path' => $uri,
    'time' => time() + $allowtime,
    'sum' => 1,
    ];
    $cache->set('waf-' . $ip, $wafarr, time() + $allowtime);
    } else {
    if ($wafarr['sum'] > $allownum) {
    $wafsum_arr = $cache->get('waf-sum-' . $ip);
    if (!$wafsum_arr) {
    $wafsum_arr = [
    'sum' => 1,
    ];
    $cache->set('waf-sum-' . $ip, $wafsum_arr, time() + $bantime);
    } else {
    if ($wafsum_arr['sum'] > $allowRefresh) {
    $cache->set('waf-ban-' . $ip, 1, time() + $bantime);
    file_put_contents($fileht, $ip . "\n", FILE_APPEND);
    } else {
    $wafsum_arr['sum']++;
    $cache->set('waf-sum-' . $ip, $wafsum_arr, time() + $bantime);
    }
    }
    file_put_contents($logPath, $ip . '--' . date('Y-m-d H:i:s', time()) . '--' . $uri . "\n", FILE_APPEND);
    header("HTTP/1.1 403 Forbidden");
    exit("请求频率QPS超过限制,请酌情访问,多次提醒后会封禁IP!");
    } else {
    $wafarr['sum']++;
    $cache->set('waf-' . $ip, $wafarr, $wafarr['time']);
    }
    }

    原文链接:https://www.h5bk.com/207.html

标签: wp教程


本文采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。免责申明:本站所发布的部分内容源于互联网搬运,仅限于小范围内传播学习和文献参考,请在下载后24小时内删除,如果有侵权之处请第一时间联系我删除。邮箱E-mail:2318297690@qq.com。


重要说明

本站资源大多来自网络,如有侵犯你的权益请联系管理员唐小叔 或给邮箱发送邮件tangxstop@163.com 我们会第一时间进行审核删除。站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!


如果遇到评论下载的文章,评论后刷新页面点击对应的蓝字按钮即可跳转到下载页面本站资源少部分采用7z压缩,为防止有人压缩软件不支持7z格式,7z解压,建议下载7-zip(点击下载),zip、rar解压,建议下载WinRAR(点击下载)

街拍秀圈子写真图

         
  • 日常干货,第一时间全知晓
  • 在线工具,提高工作的效率
立即观赏美女
   

添加新评论

注意:已开启评论过滤器,无中文无法评论!
泡泡表情