潍坊网站建设熊掌号/怎样设计一个网页
短信接口盗刷轰炸:指的是黑客利用非法手段获取短信接口的访问权限,然后使用该接口发送大量垃圾短信给目标用户
短信验证码轰炸解决方案一(验证码类解决)-CSDN博客
短信验证码轰炸解决方案二(防止海外ip、限制ip、限制手机号次数解决)-CSDN博客
PHP短信接口防刷防轰炸多重解决方案如下:
下面用到检查ip方法key可以需要去地图官网获取
腾讯位置服务 - 立足生态,连接未来
这段代码是一个名为SecurityCheck的类,用于进行安全检查。该类包含了多个私有属性和方法,用于对用户的手机号和IP地址进行检查。
该类的主要方法是checkAll(),它接收一个手机号作为参数,并依次调用其他的私有方法来进行不同的检查。checkAll()方法返回一个JSON格式的结果,包含了每个检查的状态和消息,以及整体的状态。
具体的检查步骤如下:
- 1. 防止Linux服务器访问:检查User-Agent头部,如果包含"Linux"字样,表示是Linux服务器访问,视为非法访问。
- 2. 手机与IP黑名单:检查手机号和IP地址是否在黑名单中,如果在黑名单中,则视为非法访问。
- 3. 手机与IP限制次数:检查手机号和IP地址的访问次数是否超过设定的限制次数,如果超过限制次数,则视为访问太频繁。
- 4. 防止国外IP:检查IP地址是否为国内IP,如果不是国内IP,则视为非法访问。
- 5.做好错误日志记录
- 6、补充短信服务商后台限制每天发送次数
session_start();
class SecurityCheck {private $backTel=['18888888888'];//黑名单手机号列表private $backIp=['127.0.0.0'];//黑名单ip列表private $sysMsg=[]; //异常信息,系统内部日志private $logPath='log/'; //日志目录private $limitIP = 10; //限制ip次数private $limitTel = 10; //限制手机号次数public function checkAll($tel) {$this->sysMsg[]='校验手机:'.$tel.' ip:'.$this->getIp();$result = [];//1、防止linux服务器访问$result['checkUserAgent'] = $this->checkUserAgent();//2、手机与ip黑名单$result['checkBlacklist'] = $this->checkBlacklist($tel);//3、手机与ip限制次数$result['checkLimit'] = $this->checkLimit();//4、防止国外ip$result['checkOverseasIP'] = $this->checkOverseasIP();$overallStatus = 1;foreach ($result as $checkResult) {if ($checkResult['status'] === 0) {$overallStatus =0;break;}}if($overallStatus==1){$this->sysMsg[]="校验成功";}else{$this->sysMsg[]="校验失败";}$this->w_log( $this->sysMsg);$result['overallStatus'] = $overallStatus;return json_encode($result);}private function checkUserAgent() {$userAgent = $_SERVER['HTTP_USER_AGENT'];if (strpos($userAgent, 'Linux') !== false) {$this->sysMsg[]='非法Linux 服务器访问';return ['status' => 0, 'message' => '非法访问'];}return ['status' =>1, 'message' => '成功'];}private function checkBlacklist($tel) {$result = ['status' => 1, 'message' => '成功'];$ip = $this->getIp();$backIp = $this->backIp;if (in_array($ip, $backIp)) {$this->sysMsg[]=$ip.'非法ip服务器访问';$result['status'] = 0;$result['message'] = '非法访问';}$backTel = $this->backTel;if (in_array($tel, $backTel)) {$this->sysMsg[]=$tel.'非法手机号访问';$result['status'] = 0;$result['message'] = '非法访问!';}return $result;}private function checkLimit() {$result = ['status' =>1, 'message' => '成功'];$limitIP = $this->limitIP;if ($_SESSION['ipNum'] && $_SESSION['ipNum'] > $limitIP-1) {$this->sysMsg[]='ip访问太频繁';$result['status'] =0;$result['message'] = '访问太频繁!';}$limitTel = $this->limitTel;if ($_SESSION['telNum'] && $_SESSION['telNum'] > $limitTel-1) {$this->sysMsg[]='手机号访问太频繁';$result['status'] = 0;$result['message'] = '访问太频繁!!';}return $result;}private function checkOverseasIP() {$ip = $this->getIp();if (!$this->isChinaIP($ip)) {$this->sysMsg[]='非国内ip';return ['status' => 0, 'message' => '访问太频繁!!!'];}return ['status' => 1, 'message' => '成功'];}private function getIp() {static $ip = '';if (isset($_SERVER['REMOTE_ADDR'])) {$ip = $_SERVER['REMOTE_ADDR'];}if (isset($_SERVER['HTTP_CDN_SRC_IP'])) {$ip = $_SERVER['HTTP_CDN_SRC_IP'];} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {$ip = $_SERVER['HTTP_CLIENT_IP'];} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && preg_match_all('#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s', $_SERVER['HTTP_X_FORWARDED_FOR'], $matches)) {foreach ($matches[0] as $xip) {if (!preg_match('#^(10|172\.16|192\.168)\.#', $xip)) {$ip = $xip;break;}}}if (preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $ip)) {return $ip;} else {return '127.0.0.1';}}private function isChinaIP($ip) {$key = 'PHYBZ-UOXWV-LUIPZ-DSADSA-SDSDD-ADSADA';$url = "https://apis.map.qq.com/ws/location/v1/ip?ip=" . $ip . "&key=" . $key;$res = file_get_contents($url);if ($res) {$data = json_decode($res, true);if (isset($data['result']['ad_info']['nation']) && $data['result']['ad_info']['nation'] != "中国") {return false;}}return true;}private function w_log($data) {$root_path=str_replace('\\', '/', dirname(__FILE__));//改成你自己目录$dir = $root_path . '/'.$this->logPath;if (!is_dir($dir)) {mkdir($dir, 0777, true);}$log_file = $dir . date('Ymd', time()) . '.txt';file_put_contents($log_file, "\r\n", FILE_APPEND);if (is_array($data)) {$data = json_encode($data,JSON_UNESCAPED_UNICODE); // 将数组转换为JSON格式的字符串}file_put_contents($log_file, "/".date("Y-m-d H:i:s")."--".$data, FILE_APPEND);}}
$check=new SecurityCheck();
echo $check->checkAll($_GET['tel']);sendSMS();
function sendSMS() {//发送短信if ($_SESSION['ipNum']) {++$_SESSION['ipNum'];} else {$_SESSION['ipNum'] = 1;}if ($_SESSION['telNum']) {++$_SESSION['telNum'];} else {$_SESSION['telNum'] = 1;}//添加自己的发送验证码接口//添加自己的发送验证码接口return ['status' => 1, 'message' => '发送成功'];
}
相关文章:

PHP短信接口防刷防轰炸多重解决方案三(可正式使用)
短信接口盗刷轰炸:指的是黑客利用非法手段获取短信接口的访问权限,然后使用该接口发送大量垃圾短信给目标用户 短信验证码轰炸解决方案一(验证码类解决)-CSDN博客 短信验证码轰炸解决方案二(防止海外ip、限制ip、限制手机号次数解决)-CSDN博客 PHP短信…...

C#大型LIS检验信息系统项目源码
LIS系统,一套医院检验科信息系统。它是以数据库为核心,将实验仪器与电脑连接成网,基础功能包括病人样本登录、实验数据存取、报告审核、打印分发等。除基础功能外,实验数据统计分析、质量控制管理、人员权限管理、试剂出入库等功能…...

【C语言】数据在内存中的存储
目录 练笔 整型数据的存储: char 型数据——最简单的整型 整型提升: 推广到其他整形: 大小端: 浮点型数据的存储: 存储格式: 本篇详细介绍 整型数据,浮点型数据 在计算机中是如何储存的。…...

Java聊天程序(一对一)简单版
我们首先要完成服务端,不然出错,运行也要先运行服务端,如果不先连接服务端,就不监听,那客户端不知道连接谁 服务端 import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.Actio…...

Linux下超轻量级Rust开发环境搭建:一、安装Rust
Rust语言在国内逐步开始流行,但开发环境的不成熟依然困扰不少小伙伴。 结合我个人的使用体验,推荐一种超轻量级的开发环境:Rust Helix Editor。运行环境需求很低,可以直接在Linux终端里进行代码开发。对于工程不是太过庞大的Rus…...

定义一个学生类,其中有3个私有数据成员学号、姓名、成绩,以及若于成员。 函数实现对学生数据的赋值和输出。
#include <stdio.h> // 定义学生类 typedef struct Student { int stuNum; // 学号 char name[20]; // 姓名,假设最长为20个字符 float score; // 成绩 } Student; // 初始化学生信息 void initializeStudent(Student *student, int num, const…...

1.2 C语言简介
一、为什么要讲C语言 C语言是编程界的长青藤,可以查看语言排名发现,虽然现在语言很多,但是C语言一直占有一定地址 来源网站:https://www.tiobe.com/tiobe-index/ 在系统、嵌入式、底层驱动等领域存在一定的唯一性(C语…...

小白学Java之数组问题——第三关黄金挑战
内容1.数组中出现次数超过一般的数字2.数组中出现一次的数字3.颜色分类问题 1.数组中出现次数超过一半的数字 这是剑指offer中的一道题目,数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 例如:输入如下所示的一个长度为9…...

各大期刊网址
1.NeurIPS,全称Annual Conference on Neural Information Processing Systems, 是机器学习领域的顶级会议,与ICML,ICLR并称为机器学习领域难度最大,水平最高,影响力最强的会议! NeurIPS是CCF 推…...

使用autodl服务器,在A40显卡上运行, Yi-34B-Chat-int4模型,并使用vllm优化加速,显存占用42G,速度18 words/s
1,演示视频 https://www.bilibili.com/video/BV1gu4y1c7KL/ 使用autodl服务器,在A40显卡上运行, Yi-34B-Chat-int4模型,并使用vllm优化加速,显存占用42G,速度18 words/s 2,关于A40显卡…...

unity 2d 入门 飞翔小鸟 下坠功能且碰到地面要停止 刚体 胶囊碰撞器 (四)
1、实现对象要受重力 在对应的图层添加刚体 改成持续 2、设置胶囊碰撞器并设置水平方向 3、地面添加盒状碰撞器 运行则能看到小鸟下坠并落到地面上...

速达软件任意文件上传漏洞复现
简介 速达软件专注中小企业管理软件,产品涵盖进销存软件,财务软件,ERP软件,CRM系统,项目管理软件,OA系统,仓库管理软件等,是中小企业管理市场的佼佼者,提供产品、技术、服务等信息,百万企业共同选择。速达软件全系产品存在任意文件上传漏洞,未经身份认证得攻击者可以通过此漏…...

Name or service not knownstname
Name or service not knownstname Hadoop 或 Spark 集群启动时 报错 Name or service not knownstname 原因时因为 workers 文件在windows 使用图形化工具打开过 操作系统类型不对引发的 在Linux系统上删除 workers 文件 使用 vim 重新编辑后分发即可...

[Geek Challenge 2023] web题解
文章目录 EzHttpunsignn00b_Uploadeasy_phpEzRceezpythonezrfi EzHttp 按照提示POST传参 发现密码错误 F12找到hint,提示./robots.txt 访问一下,得到密码 然后就是http请求的基础知识 抓包修改 最后就是 我们直接添加请求头O2TAKUXX: GiveMeFlag 得到…...

【recrutment / Hiring / Job / Application】
Interviewee I), objected/targeted job/position1.1) Azure 平台运维工程师(comms&social)1.1.1), comms communication and social, for talk, content1.1.2) Cloud computing1.1.3) 拥有ITI/MCSE/RHCE相关认证或Azure认证(如Az204/Az304 have/own…...

二极管:ESD静电保护二极管
一、什么是ESD二极管 ESD二极管与 TVS二极管原理是一样的,也是为了保护电,但ESD二极管的主要功能是防止静电。 静电防护的前提条件就要求其电容值要足够地低,一般在1PF-3.5PF之间最好,主要应用于板级保护。 二、什么是静电 静…...

【根据数组元素生成随机颜色函数】
const colorOptions ["#f50","#2db7f5","#87d068","#108ee9",];const getRandomColor () > {const randomIndex Math.floor(Math.random() * colorOptions.length);return colorOptions[randomIndex];}; 时小记,终有…...

鸿蒙一出,android开发处境再受重创
华为宣布其自研操作系统鸿蒙HarmonyOSNEXT开发者预览版将不再兼容安卓系统,这一消息引起了广泛关注和热议。这一决策标志着华为正式告别安卓,摆脱了外部的制约,开始着手打造一个全新的生态系统。 鸿蒙系统4发布一个月,截至目前&a…...

ruoyi+Hadoop+hbase实现大数据存储查询
前言 有个现实的需求,数据量可能在100亿条左右。现有的数据库是SQL Server,随着采集的数据不断的填充,查询的效率越来越慢(现有的SQL Server查询已经需要数十秒钟的时间),看看有没有优化的方案。 考虑过S…...

Word 在页眉或页脚中设置背景颜色
目录预览 一、问题描述二、解决方案三、参考链接 一、问题描述 如何在word的页眉页脚中设置背景色? 二、解决方案 打开 Word 文档并进入页眉或页脚视图。在 Word 2016 及更高版本中,你可以通过在“插入”选项卡中单击“页眉”或“页脚”按钮来进入或者…...

python获取js data.now同款时间戳
import requestsimport time from datetime import datetimecu_t datetime.now() se cu_t.timestamp()*1000 se int(se) print(se)#cur_time time.time()*1000 #seconds int(cur_time) #print(seconds)...

线上超市小程序可以做什么活动_提升用户参与度与购物体验
标题:线上超市小程序:精心策划活动,提升用户参与度与购物体验 一、引言 随着移动互联网的普及,线上购物已经成为人们日常生活的一部分。线上超市作为线上购物的重要组成部分,以其便捷、快速、丰富的商品种类和个性化…...

旺店通:API无代码开发的集成解决方案,连接电商平台、CRM和客服系统
集成电商生态:旺店通的核心优势 在数字化转型的浪潮中,旺店通旗舰版奇门以其无代码开发的集成解决方案,正成为电商领域的关键变革者。商家们通过旺店通可以轻松实现与电商平台、CRM系统和客服系统的连接,无需深入了解复杂的API开…...

命令查询pg 数据库版本,并且分析结果行各代表什么意思
目录 1 问题2 实现 1 问题 命令查询pg 数据库版本,并且分析结果行各代表什么意思 2 实现 SELECT version(); PostgreSQL 11.7 (Debian 11.7-2.pgdg1001) on x86_64-pc-linux-gnu, compiled by gcc (Debian 8.3.0-6) 8.3.0, 64-bit这是一条关于 PostgreSQL 数据库…...

Elaticsearch 学习笔记
文章目录 Elaticsearch 学习笔记一、什么是 Elaticsearch ?二、Elaticsearch 安装1 es 安装2 问题解决3 数据格式 三、索引操作1 PUT 请求:在postman中,向 ES 服务器发 PUT 请求(PUT请求相当于创建的意思)2 GET 请求&a…...

计算机网络体系的形成
目录 1、开放系统互连参考模型OSI/RM 2、两种国际标准 3、协议与划分层次 4、网络协议的三要素 5、划分层次 (1)文件发送模块使两个主机交换文件 (2)通信服务模块 (3)接入网络模块 6、分层带来的好…...

PyTorch 基础篇(1):Pytorch 基础
Pytorch 学习开始 入门的材料来自两个地方: 第一个是官网教程:WELCOME TO PYTORCH TUTORIALS,特别是官网的六十分钟入门教程 DEEP LEARNING WITH PYTORCH: A 60 MINUTE BLITZ。 第二个是韩国大神 Yunjey Choi 的 Repo:pytorch-t…...

掌握Selenium4:详解各种定位方式
Selenium4中有多种元素定位方式,主要包括以下几种: 通过ID属性定位:根据元素的id属性进行定位。通过name属性定位:当元素没有id属性而有name属性时,可以使用name属性进行元素定位。通过class name定位:可以…...

go-fastfds部署心得
我是windows系统安装 Docker Desktop部署 docker run --name go-fastdfs(任意的一个名称) --privilegedtrue -t -p 3666:8080 -v /data/fasttdfs_data:/data -e GO_FASTDFS_DIR/data sjqzhang/go-fastdfs:lastest docker run:该命令用于运…...

Python第三次练习
Python 一、如何判断一个字符串是否是另一个字符串的子串二、如何验证一个字符串中的每一个字符均在另一个字符串中出现三、如何判定一个字符串中既有数字又有字母四、做一个注册登录系统 一、如何判断一个字符串是否是另一个字符串的子串 实现代码: string1 inp…...