当前位置:首页 » 好文分享 » 详情

    分享几套防御代码

    首先是SSL,js跳转!SSL是站点防御的一个十分好的帮手。

    解决了哪些问题:PhP与Nginx实现不了ssl跳转的毛病,运用简洁的JS引用实现ssl跳转。

    代码:
    <script type="text/javascript">
    var targetProtocol = "https:";
    if (window.location.protocol != targetProtocol)
     window.location.href = targetProtocol +
      window.location.href.substring(window.location.protocol.length);
    </script>

    2.PHP实现waf防御效果:
    <?php
    /*云体检通用漏洞防护补丁v1.1
    更新时间:2013-05-25
    功能说明:防护XSS,SQL,代码执行,文件包含等多种高危漏洞
    */
    $url_arr=array(
    'xss'=>"\\=\\+\\/v(?:8|9|\\+|\\/)|\\%0acontent\\-(?:id|location|type|transfer\\-encoding)",
    );
    $args_arr=array(
    'xss'=>"[\\'\\\"\\;\\*\\<\\>].*\\bon[a-zA-Z]{3,15}[\\s\\r\\n\\v\\f]*\\=|\\b(?:expression)\\(|\\<script[\\s\\\\\\/]|\\<\\!\\[cdata\\[|\\b(?:eval|alert|prompt|msgbox)\\s*\\(|url\\((?:\\#|data|javascript)",
    'sql'=>"[^\\{\\s]{1}(\\s|\\b)+(?:select\\b|update\\b|insert(?:(\\/\\*.*?\\*\\/)|(\\s)|(\\+))+into\\b).+?(?:from\\b|set\\b)|[^\\{\\s]{1}(\\s|\\b)+(?:create|delete|drop|truncate|rename|desc)(?:(\\/\\*.*?\\*\\/)|(\\s)|(\\+))+(?:table\\b|from\\b|database\\b)|into(?:(\\/\\*.*?\\*\\/)|\\s|\\+)+(?:dump|out)file\\b|\\bsleep\\([\\s]*[\\d]+[\\s]*\\)|benchmark\\(([^\\,]*)\\,([^\\,]*)\\)|(?:declare|set|select)\\b.*@|union\\b.*(?:select|all)\\b|(?:select|update|insert|create|delete|drop|grant|truncate|rename|exec|desc|from|table|database|set|where)\\b.*(charset|ascii|bin|char|uncompress|concat|concat_ws|conv|export_set|hex|instr|left|load_file|locate|mid|sub|substring|oct|reverse|right|unhex)\\(|(?:master\\.\\.sysdatabases|msysaccessobjects|msysqueries|sysmodules|mysql\\.db|sys\\.database_name|information_schema\\.|sysobjects|sp_makewebtask|xp_cmdshell|sp_oamethod|sp_addextendedproc|sp_oacreate|xp_regread|sys\\.dbms_export_extension)",
    'other'=>"\\.\\.[\\\\\\/].*\\%00([^0-9a-fA-F]|$)|%00[\\'\\\"\\.]");
    $referer=emptyempty($_SERVER['HTTP_REFERER']) ? array() : array($_SERVER['HTTP_REFERER']);
    $query_string=emptyempty($_SERVER["QUERY_STRING"]) ? array() : array($_SERVER["QUERY_STRING"]);
    check_data($query_string,$url_arr);
    check_data($_GET,$args_arr);
    check_data($_POST,$args_arr);
    check_data($_COOKIE,$args_arr);
    check_data($referer,$args_arr);
    function W_log($log)
    {
    $logpath=$_SERVER["DOCUMENT_ROOT"]."/log.txt";
    $log_f=fopen($logpath,"a+");
    fputs($log_f,$log."\r\n");
        fclose($log_f);
    }
    function check_data($arr,$v) {
    foreach($arr as $key=>$value)
     {
    if(!is_array($key))
        { check($key,$v);}
    else
        { check_data($key,$v);}
    if(!is_array($value))
        { check($value,$v);}
    else
        { check_data($value,$v);}
     }
    }
    function check($str,$v)
    {
    foreach($v as $key=>$value)
        {
    if (preg_match("/".$value."/is",$str)==1||preg_match("/".$value."/is",urlencode($str))==1)
            {
    //W_log("<br>IP: ".$_SERVER["REMOTE_ADDR"]."<br>时间: ".strftime("%Y-%m-%d %H:%M:%S")."<br>页面:".$_SERVER["PHP_SELF"]."<br>提交方式: ".$_SERVER["REQUEST_METHOD"]."<br>提交数据: ".$str);
                print "您的提交带有不合法参数,谢谢合作";
    exit();
            }
        }
    }
    ?>
    站长XSS,SQL等担忧迎刃而解!
    
    3.PHP防御CC:
    代码为酸奶博客首发,经过二次优化后发出。请先建立一个php文件,名为jiance.php,然后将以下代码放入,将php文件放入模板目录。
    
    <?php
    //代理IP直接退出
    emptyempty($_SERVER['HTTP_VIA']) or exit('Access Denied');
    //防止快速刷新
    session_start();
    $seconds = '60'; //时间段[秒]
    $refresh = '25'; //刷新次数
    //设置监控变量
    $cur_time = time();
    if(isset($_SESSION['last_time'])){
     $_SESSION['refresh_times'] += 1;
    }else{
     $_SESSION['refresh_times'] = 1;
     $_SESSION['last_time'] = $cur_time;
    }
    //处理监控结果
    if($cur_time - $_SESSION['last_time'] < $seconds){
     if($_SESSION['refresh_times'] >= $refresh){
      //攻击者跳转地址
       $url='http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
      echo '<html><head><title>西顾5秒盾</title><h3><center><font color="#FF0000">检测到cc攻击请等待5秒跳转</font></center></h3><meta http-equiv="refresh" content="5;url='; 
      echo $url;
      echo '"/> </head></html>';
      exit();
     }
    }else{
     $_SESSION['refresh_times'] = 0;
     $_SESSION['last_time'] = $cur_time;
    }
    ?>

    然后将以下代码扔入模板的header.php里即可生效!
    include 'jianche.php';

    没有一定基础建议不要乱改!
    打赏
    X
    打赏方式:
    • 支付宝
    • 微信
    • QQ红包

    打开支付宝扫一扫
    日期:2017年12月03日 19:16:27 星期日   分类:好文分享   浏览(32619)
    本文地址:https://www.blogs.hk/post-2902.html   [百度已收录]
    声明:本页信息由网友自行发布或来源于网络,真实性、合法性由发布人负责,请仔细甄别!本站只为传递信息,我们不做任何双方证明,也不承担任何法律责任。文章内容若侵犯你的权益,请联系本站删除!
    版权所有:《博客之家
    文章标题:《分享几套防御代码
    除非注明,文章均为 《博客之家》 原创
    转载请注明本文短网址:https://www.blogs.hk/post-2902.html  [生成短网址]

    留言咨询

    自动获取QQ

    昵称

    邮箱

    网址

        站点统计

        • 收录网址:3370 个
        • 发布文章:3008 条
        • 在线人数:1人
        • 总访问量:270560237次
        • 本站运行:12年5月3天
        Copyright © 2025 博客之家 版权所有  
        關於本站免責聲明sitemap新站登錄