1. 检查IP是否黑名单中,如果是则终止访问。
2. 检查手机号是否在黑名单中,如果是则终止访问。
3. 对于同一个IP,限制访问次数,如果超过限制则终止访问。
4. 对于同一个手机号,限制访问次数,如果超过限制则终止访问。
5. 检查IP是否海外IP,如果是则终止访问。
6. 如果通过所有限制条件调用send函数发送短信

apis.map.qq.com

 腾讯地图官网

腾讯位置服务 – 立足生态,连接未来

<?php
session_start();

// 黑名单IP列表
$blacklistIP = ['127.0.0.1'];

// 黑名单手机列表
$blacklistTel = ['18888888888'];

// IP访问限制次数
$limitIP = 10;

// 手机号访问限制次数
$limitTel = 10;

// 检查IP是否在黑名单中
$ip = getip();
if (in_array($ip, $blacklistIP)) {
    die('非法访问');
}

// 检查手机是否在黑名单中
$tel = $_GET['tel'];
if (in_array($tel, $blacklistTel)) {
    die('非法访问!');
}

// 检查IP访问次数
if (isset($_SESSION['ipNum']) && $_SESSION['ipNum'] > $limitIP - 1) {
    die('访问太频繁!');
}

// 检查手机号访问次数
if (isset($_SESSION['telNum']) && $_SESSION['telNum'] > $limitTel - 1) {
    die('访问太频繁!');
}

// 检查海外IP
if (!iszgip($ip)) {
    die('访问太频繁!!!');
}

// 发送短信
send();

function send()
{
    if (isset($_SESSION['ipNum'])) {
        ++$_SESSION['ipNum'];
    } else {
        $_SESSION['ipNum'] = 1;
    }
    if (isset($_SESSION['telNum'])) {
        ++$_SESSION['telNum'];
    } else {
        $_SESSION['telNum'] = 1;
    }
    echo '发送成功';
}

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';
    }
}

function iszgip($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;
}
?>

这段代码实现了一些简单的访问限制,可以提供一定程度的防护。以下是该代码的优点和缺点:

优点:
1. 黑名单功能可以指定的IP地址或手机添加到黑名单,从而禁止其访问。
2. 访问次数限制:对于同一个IP地址或手机号,可以限制其访问次数,避免频繁访问或滥用。
3. 检查海外IP:通过调用腾讯地图API,可以判断访问者的IP是否属于中国境内,从而禁止海外IP的访问。

缺点:
1. 黑名单功能针对预先设置的IP地址和手机号,无法应对新出现恶意IP或手机号。
2. 访问次数限制使用基于Session计数器,这意味着计数器是与用户的Session绑定的。如果用户清除了Session使用多个不同会话,该限制将无效
3. 检查海外IP功能依赖于腾讯地图API的可用性和准确性。如果API出现问题返回地理位置信息不准确,可能会导致错误判断结果

注意,这段代码仅提供了一种简单防护措施,无法完全保护应用程序免受所有攻击。在实际应用中,建议结合其他安全措施,如使用防火墙、Web应用程序防护(WAF)等来增强安全性。此外,及时更新代码和及时监测安全事件也是保护应用程序安全的重要措施

原文地址:https://blog.csdn.net/weixin_39934453/article/details/134798885

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_47948.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注