WordPress搜索结果页面人机验证代码,算术验证

对于搜索接口开放的网站,不良分子都可以通过“搜索”的方式进行攻击。这个不仅限于WordPress,其他CMS和自定义网站也可能受到类似的攻击,轻则服务器瘫痪,重则网站被K。

效果图

图片1 WordPress搜索结果页面人机验证代码算术验证 辰安博客 辰安博客
WordPress搜索结果页面人机验证代码算术验证

代码添加方法

进入WordPress后台 > 外观 > 主题编辑器 > 点击"functions.php" > 粘贴代码到文件内容中 > 最后“更新文章”。

代码

这里面的 $num1 = rand(1,50); $num2 = rand(1,50);部分可以设置简单点,数字1到5就够了

    function esc_search_captcha( $query, $error = true ) {
      if ( is_search() && !is_admin() ) {
        if ( ! isset( $_COOKIE['esc_search_captcha'] ) ) {
          $query->is_search = false;
          $query->query_vars['s'] = false;
          $query->query['s'] = false;
 
          if ( $error == true ){
            //$query->is_404 = true;
            if ( isset( $_POST['result'] ) ) {
              if ( $_POST['result'] == $_COOKIE['result'] ) {
                $_COOKIE['esc_search_captcha'] = 1;
                setcookie('esc_search_captcha',1,0,'/');
                echo '<script>location.reload();</script>';
              }
            }
 
            $num1 = rand(1,50);
            $num2 = rand(1,50);
            $result = $num1+$num2;
            $_COOKIE['result'] = $result;
            setcookie('result',urldecode($result),0,'/');
            ?>
 
            <HTML>
            <head>
            <meta charset="UTF-8">
            <title>人机验证</title>
            <style>
            body{color: #333;text-align: center;font-size: 16px;}
            .erphp-search-captcha{margin: 50px auto 15px;max-width: 250px;width: 100%;padding: 40px 20px;border: 1px solid #ddd;text-align: center;border-radius: 5px;}
            .erphp-search-captcha form{margin: 0}
            .erphp-search-captcha input{border: none;border-bottom: 1px solid #666;width: 50px;text-align: center;font-size: 16px;}
            .erphp-search-captcha input:focus{outline: none;}
            .erphp-search-captcha button{border: none;background: transparent;color: #ff5f33;cursor: pointer;}
            .erphp-search-captcha button:focus{outline: none;}
            a{color: #000;font-size: 12px;}
            </style>
            </head>
            <body>
            <div class="erphp-search-captcha">
            <form action="" method="post"><?php echo $num1;?> + <?php echo $num2;?> = <input type="text" name="result" required /> <button type="submit">验证</button></form>
            </div>
            <a href="<?php echo home_url();?>">返回首页</a>
            </body>
            </html>
            <?php
            exit;
          }
        }
      }
    }
    add_action( 'parse_query', 'esc_search_captcha' );

转自老白博客:https://www.xcbtmw.com/26056.html

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容